CDI:@Decorator @Stateless

lan*_*l79 2 ejb decorator cdi jboss6.x

CDI装饰者可以成为无国籍的ejb吗?

我试过了:

@Decorator
@Stateless
public class WarehouseHandlingDecorator implements SerialKitServiceWarehouseHandling {


@Inject
@Any
@Delegate
protected SerialKitServiceWarehouseHandling serialKitServiceWarehouseHandling;

...

}
Run Code Online (Sandbox Code Playgroud)

我部署在JBoss 6.1上,我收到以下消息:

WELD-000038不能将@Delegate放在一个不在Decorator上的注入点:@New Session bean [类com.eggsweb.production.services.WarehouseHandlingDecorator with qualifiers [@New]; 本地接口是[SerialKitServiceWarehouseHandling]

Dav*_*ins 5

装饰器和拦截器不能是EJB.您可以将装饰器和拦截器放在 EJB上,但EJB不能是装饰器或拦截器.

您可以将EJB注入到Decorator或Interceptor中,这样就可以打开一些选项.也许注入一个@Statelessbean @Decorator并让它委托你为EJB设想的工作.

实际上,您可以向EJB传递对@DelegateDecorator中的引用@PostConstruct,然后将所有调用委托给EJB而不是原始委托.