在bean归档(jar)中定义和使用CDI Interceptor时不起作用

时间:2013-02-01 15:58:31

标签: java glassfish java-ee-6 cdi interceptor

我有以下项目结构(Maven):

- war with `WEB-INF/beans.xml`, `WEB-INF/web.xml` and REST service configuration
- ext-spi (packaged as jar, not bean archive) which provides some simple SPI, finally goes to `war/WEB-INF/lib`  
- ext - parent project (pom)  
-- ext-impl (jar, bean archive - META-INF/beans.xml exists) - contains CDI Interceptor (both binding and implementation) + some REST service (RequestScoped CDI Bean) which is annotated with mentioned Interceptor Binding finally goes to `war/WEB-INF/lib`  
-- ext-model (jar) - contains REST service API and data model, finally goes to `war/WEB-INF/lib`

问题是Interceptor根本不起作用。当然,我已在beans.xml中启用了它(与warext-impl的不同组合)。没有错误,没有警告。 看起来META-INF/beans.xml甚至没有从jar中读取 - 没有抱怨我在启用拦截器甚至格式错误的xml标签时给出的假类路径。当@Inject来自同一个bean归档的另一个CDI Bean时,同一个CDI Bean没有问题。

如果我尝试在war中直接创建的某些CDI Bean上使用相同的拦截器 - 一切都运行良好。

根据规范它应该有用。

Application Server: Glassfish 3.1.2.2

拦截器:

@Inherited  
@InterceptorBinding  
@Target({ ElementType.TYPE, ElementType.METHOD })  
@Retention(RetentionPolicy.RUNTIME)  
public @interface ResourceInterceptorBinding {
}

你知道可能出现什么问题吗?

1 个答案:

答案 0 :(得分:0)

只是为了踢和咯咯笑,尝试添加war beans.xml,看看会发生什么。