Сделать осведомленный о 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.

Другие вопросы по тегам