ejb - CDI:@Decorator @Stateless

标签 ejb decorator cdi jboss6.x

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/

相关文章:

.net - 为什么要创建 EJB 而不是 Web 服务?

python - 有没有办法在 Python 中对函数的每一行进行修饰/执行操作?

python - 子类层次结构中的链式方法要执行以获得层次结构中所有方法执行的联合

java - EJB 无法更新数据模型

jakarta-ee - 将参数初始化为 EJB

c# - 声明静态成员的类装饰器(例如,对于 log4net)?

java - 注释由生产者注入(inject)的变量

java - Spring InitializingBean 不适用于 CDI

jakarta-ee - Java EE bean 和 volatile 关键字

java - EntityManager 的 find() 方法是否创建 JPA 类的新实例?