我想使用 CDI 使用 Weblogic 10.3.6 中的生产者方法将对象注入 EJB 类。Weblogic 10.3.6 是一个 Java EE 5 容器,因此不支持开箱即用的 CDI。迁移到 Weblogic 12c(支持开箱即用的 CDI)将是一个我们现在无法承担的相当大的迁移项目。
是否可以将 Weld 或 OpenWebBeans 改装到 Weblogic 10.3.6?到目前为止,我一直试图让 OpenWebBeans 工作但没有成功。我在类路径中放置了以下 jar 文件:
openwebbeans-ee-1.2.6.jar
openwebbeans-ee-common-1.2.6.jar
openwebbeans-ejb-1.2.6.jar
openwebbeans-el10-1.2.6.jar
openwebbeans-el22-1.2.6.jar
openwebbeans-impl-1.2.6.jar
openwebbeans-jms-1.2.6.jar
openwebbeans-osgi-1.2.6.jar
openwebbeans-resource-1.2.6.jar
openwebbeans-spi-1.2.6.jar
openwebbeans-web-1.2.6.jar
我还在我的 EJB 项目中添加了一个 META-INF/openwebbeans/openwebbeans.properties 文件(传统的 EJB jar 打包在一个 .ear 文件中)。我修改/添加了以下内容:
org.apache.webbeans.spi.deployer.useEjbMetaDataDiscoveryService=true org.apache.webbeans.resource.spi.ResourceService=org.apache.webbeans.ejb.resource.OpenEjbResourceInjectionService
我还将以下示例破解到 EJB 类中以检查它是否有效: http ://www.javacodegeeks.com/2013/04/java-ee-cdi-producer-methods-tutorial.html
但是,应该注入的成员变量仍然为空。我在日志中看不到任何错误。
我开始觉得这只有在 EJB 类部署在定义了 OpenWebBeans 侦听器的 .war 文件中时才有效。我这样说对吗?