CDI 装饰器可以是无状态 ejb 吗?
我尝试过:
@Decorator
@Stateless
public class WarehouseHandlingDecorator implements SerialKitServiceWarehouseHandling {
@Inject
@Any
@Delegate
protected SerialKitServiceWarehouseHandling serialKitServiceWarehouseHandling;
...
}
我在 JBoss 6.1 上部署并收到以下消息:
WELD-000038 无法将 @Delegate 放置在不在装饰器上的注入(inject)点:@New Session bean [class com.eggsweb.production.services.WarehouseHandlingDecorator with qualifiers [@New];本地接口(interface)是 [SerialKitServiceWarehouseHandling]
最佳答案
装饰器和拦截器不能是 EJB。您可以将装饰器和拦截器放在 EJB 上,但 EJB 不能是装饰器或拦截器。
您可以将 EJB 注入(inject)到装饰器或拦截器中,这样就可以打开一些选项。也许将一个 @Stateless
bean 注入(inject)到 @Decorator
中,并让它委托(delegate)您为 EJB 设想的工作。
事实上,您可以向 EJB 传递对装饰器的 @PostConstruct
中的 @Delegate
的引用,然后将所有调用委托(delegate)给 EJB 而不是原始委托(delegate).
关于ejb - CDI:@Decorator @Stateless,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8807798/