2015-10-05 5 views
0

Мы используем Toplink 11 (без JPA) в качестве основы персистентности для нашего приложения Java EE. В конфигурационном файле TOPLINK sessions.xml мы определили класс слушателя:Создайте класс CDI, соответствующий первому классу Eventlink.

<event-listener-class>my.application.EventListener</event-listener-class> 

Это хорошо работает, но теперь я хотел бы придать зависимостей в этот слушатель класса с помощью CDI @Inject.

Неудивительно, что это не сработало, введенные объекты null. Вероятно, потому, что Toplink самостоятельно инициализирует класс слушателя, минуя жизненный цикл CDI.

Есть ли способ иметь класс слушателя с жизненным циклом CDI?
В качестве альтернативы, я могу вручную «ввести» обработанные CDI компоненты в класс, например. в конструкторе?

ответ

0

Возможность использования CDI в EntityListener была introduced with JPA 2.1.

Согласно this guide, JPA 2.1 может быть включен с момента запуска TopLink 12.1.3. Можно ли обновить среду до этой версии?

В качестве альтернативы, может быть достаточно просто обновить связанный файл eclipselink.jar до более новой версии.

Возможно также стоит взглянуть на Apache CODI или JBoss Seam.

+0

Спасибо за указатели. Модернизация Toplink на данный момент невозможна. CODI и Seams, похоже, сосредоточены на JSF и веб-стеке. Мы используем Java EE с EJB и удаленным вызовом без веб-уровня. – jhyot

+0

В этом случае вы пытались перейти на новую версию eclipselink.jar? Я не могу проверить, что в данный момент, но это должно быть обратно совместимо со старой версией TopLink, которую вы используете. –

+0

Я буду иметь это в виду как решение, спасибо. Здесь необходимо внимательно изучить основные изменения в таких основных библиотеках (тестирование, ...) – jhyot

Смежные вопросы