我有一个包含多个ejb-jar和war的EAR文件。在EJB-JAR,我注入接口的多种实现这样的:当ejb注入实现在同一个耳朵的战争中定义时,CDI不工作
@Inject
@Any
private Instance<ConfigurationProviderLocal> providerEjb;
该接口的实现是在战争的定义。这个实现部署得很好。
在GlassFish V3.1登录我看到:
相关信息:对于EJB FormConfigurationProviderBean移植的JNDI名称: 【JAVA:全球/ com.dialog.edialog_eservices_ear_1.0.1-快照/结帐 - 成型 - 1.0 -SNAPSHOT /FormConfigurationProviderBean, 的java:全球/ com.dialog.edialog_eservices_ear_1.0.1-SNAPSHOT /结帐形式-1.0-SNAPSHOT /FormConfigurationProviderBean!com.dialog.sbsm.talisker.core.config.api.ConfigurationProviderLocal]
但在我实现的迭代:
for (ConfigurationProviderLocal provider : providerEjb) {
[...]
}
实施FormConfigurationProviderBean
永远不会重复。日志中没有消息可以解释这一点。另外,当我单独部署这场战争(不是在耳边,里面嵌入了依赖关系),注射工作正常。
在战争中定义实现时是否支持CDI?是否有类加载器问题?
它似乎是一个类加载器问题:当我“导出”我的实现在另一个ejb-jar中,我声明它是我的战争(范围提供)et和耳朵(范围编译),所有作品都完美... – le2tbomi 2012-07-12 09:19:27