3

我有以下项目结构(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`

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

如果我尝试在直接创建的某些 CDI Bean 上使用相同的拦截器war- 一切正常。

根据规范,它应该可以工作。

应用服务器: Glassfish 3.1.2.2

拦截器:

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

您知道可能出了什么问题吗?

4

2 回答 2

0

对于那些感兴趣的人:看起来它是一个 Glassfish 错误。我刚刚发现了以下 Jira 问题:http: //java.net/jira/browse/GLASSFISH-18802

编辑:更糟糕的是 - 我必须在所有 bean 档案中启用拦截器,这些档案可以在META-INF\lib. 否则它根本行不通。

于 2013-02-06T21:22:24.020 回答
0

只是为了好玩和咯咯笑,尝试将它添加到 war beans.xml 中,看看会发生什么。

于 2013-02-03T16:14:20.387 回答