我们使用Toplink 11(没有JPA)作为Java EE应用程序的持久性框架。在Toplink配置文件sessions.xml
中,我们定义了一个侦听器类:
<event-listener-class>my.application.EventListener</event-listener-class>
这工作得很好,但是现在我想通过CDI @Inject
将依赖项注入到这个侦听器类中。
并不奇怪,这不起作用,注入的对象是null
。可能是因为Toplink自己实例化了侦听器类,绕过了CDI生命周期。
是否有一种方法可以在CDI生命周期内拥有侦听器类?
或者,我可以手动"注入"CDI管理bean到类中,例如在构造函数中?
在EntityListener中使用CDI的能力是在JPA 2.1中引入的。
根据本指南,JPA 2.1可以从TopLink 12.1.3开始启用。是否有可能将您的环境升级到该版本?
或者,简单地将捆绑的eclipselink.jar文件更新到新版本就足够了。
Apache CODI或JBoss Seam也值得一看。