Jakarta ee 使Toplink事件侦听器类CDI知晓

Jakarta ee 使Toplink事件侦听器类CDI知晓,jakarta-ee,dependency-injection,cdi,java-ee-6,toplink,Jakarta Ee,Dependency Injection,Cdi,Java Ee 6,Toplink,我们使用Toplink11(无JPA)作为JavaEE应用程序的持久性框架。 在Toplink配置文件sessions.xml中,我们定义了一个侦听器类: <event-listener-class>my.application.EventListener</event-listener-class> my.application.EventListener 这很好,但现在我想通过CDI@inject将依赖项注入这个侦听器类 毫不奇怪,这不起作用,注入的对象是null

我们使用Toplink11(无JPA)作为JavaEE应用程序的持久性框架。 在Toplink配置文件
sessions.xml
中,我们定义了一个侦听器类:

<event-listener-class>my.application.EventListener</event-listener-class>
my.application.EventListener
这很好,但现在我想通过CDI
@inject
将依赖项注入这个侦听器类

毫不奇怪,这不起作用,注入的对象是
null
。可能是因为Toplink绕过CDI生命周期,自行建立侦听器类

有没有办法让侦听器类与CDI生命周期同步?

或者,我是否可以手动将CDI管理的bean“注入”到类中,例如在构造函数中?

在EntityListener中使用CDI的能力是有限的

根据,JPA2.1可以从TopLink 12.1.3开始启用。是否可以将您的环境升级到该版本

或者,只需将捆绑的eclipselink.jar文件更新到新版本就足够了


它可能也值得一看。

谢谢你的指点。目前无法升级Toplink。CODI和Seams似乎专注于JSF和web堆栈。我们将JavaEE与EJB一起使用,远程调用没有web层。在这种情况下,您是否尝试升级到更新版本的eclipselink.jar?我目前无法验证这一点,但它应该与您正在使用的旧版本TopLink向后兼容。我会记住这一点作为解决方案,谢谢。这些核心库中的主要版本更改必须在此处小心处理(测试…)