【发布时间】:2012-07-12 07:46:26
【问题描述】:
我有一个包含多个 ejb-jar 和 war 的 EAR 文件。在一个 ejb-jar 中,我注入了多个这样的接口实现:
@Inject
@Any
private Instance<ConfigurationProviderLocal> providerEjb;
这个接口的一个实现是在一个战争中定义的。此实现部署良好。
在 glassfish v3.1 日志中我看到:
信息:EJB FormConfigurationProviderBean 的可移植 JNDI 名称: [java:global/com.dialog.edialog_eservices_ear_1.0.1-SNAPSHOT/checkout-form-1.0-SNAPSHOT /FormConfigurationProviderBean, java:global/com.dialog.edialog_eservices_ear_1.0.1-SNAPSHOT/checkout-form-1.0-SNAPSHOT /FormConfigurationProviderBean!com.dialog.sbsm.talisker.core.config.api.ConfigurationProviderLocal]
但在我的实现的迭代中:
for (ConfigurationProviderLocal provider : providerEjb) {
[...]
}
实现FormConfigurationProviderBean 永远不会迭代。我在日志中没有可以解释这一点的消息。
此外,当我单独部署战争时(不是在耳内,其中嵌入了依赖项),注入工作正常。
在战争中定义实施时是否支持 CDI?有类加载器问题吗?
【问题讨论】:
-
这似乎是一个类加载器问题:当我在另一个 ejb-jar 中“导出”我的实现并将其声明为我的战争(提供范围)和耳朵(范围编译)的依赖时,所有完美运行...
标签: jakarta-ee cdi ear