【问题标题】:CDI - Injecting Objects into EJB class by Using Producer Methods in Weblogic 10.3.6CDI - 在 Weblogic 10.3.6 中使用生产者方法将对象注入 EJB 类
【发布时间】:2014-08-22 06:26:33
【问题描述】:

我想使用 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 文件中时才有效。我这样说对吗?

【问题讨论】:

    标签: jakarta-ee cdi weblogic-10.x weld openwebbeans


    【解决方案1】:

    很久以前,我试图让 Weld 在 Weblogic 10.3.6 中工作,但没有成功。我想,即使你能成功,它也会有问题。因此,请放松并使用 Guice 或 smth,就像 WL 10.3 中的那样

    【讨论】:

    • 我看到让 Weld 或 OpenWebBeans 工作是徒劳的。所以这正是我最终要做的。我使用了带有 EJB 拦截器注释的 Google Guice,该注释在 AroundInvoke 方法中使用 Injector.injectMembers 执行注入。
    猜你喜欢
    • 2013-12-29
    • 2023-03-29
    • 2013-09-17
    • 2017-02-09
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    相关资源
    最近更新 更多