我有一个包含多个 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?有类加载器问题吗?