Сделать осведомленный о CDI класса событий-слушателей Toplink
Мы используем Toplink 11 (без JPA) в качестве среды хранения для нашего приложения Java EE. В конфигурационном файле Toplink sessions.xml
мы определили класс слушателя:
<event-listener-class>my.application.EventListener</event-listener-class>
Это хорошо работает, но теперь я хотел бы внедрить зависимости в этот класс слушателей через CDI @Inject
,
Неудивительно, что это не работает, введенные объекты null
, Возможно, потому что Toplink сам устанавливает класс слушателя, минуя жизненный цикл CDI.
Есть ли способ, чтобы класс слушателя соответствовал жизненному циклу CDI?
Или же я могу вручную "внедрить" управляемые компоненты CDI в класс, например, в конструктор?
1 ответ
Возможность использовать CDI в EntityListener была введена в JPA 2.1.
Согласно этому руководству JPA 2.1 может быть включен начиная с TopLink 12.1.3. Будет ли возможно обновить вашу среду до этой версии?
В качестве альтернативы может быть достаточно просто обновить пакетный файл eclipselink.jar до более новой версии.
Возможно, стоит взглянуть на Apache CODI или JBoss Seam.