Перехватчики Java EE EJB

#jakarta-ee #interceptor

#джакарта-ee #перехватчик

Вопрос:

Возможно ли настроить перехватчик по умолчанию для всех EJB в ear?

Перехватчики по умолчанию могут быть указаны для EJBS в модуле в ejb-jar.xml . Если в приложении имеется несколько модулей, все модули должны иметь эту конфигурацию.

Я рассматриваю возможность применения определенных перехватчиков в приложении по всему миру. Поэтому было бы полезно, если бы это можно было установить на уровне приложения или на уровне сервера, чтобы их включение не оставлялось на усмотрение разработчиков отдельных модулей.

Комментарии:

1. комментарий не по теме, не будет ли это слишком большим отклонением от фильтрации / перехвата?

2. Версия EJB — 3.1, и я использую перехватчики JEE 6. Недостатком является то, что перехватчики по умолчанию должны быть настроены в каждом ejb-jar.xml во всех модулях ejb. Намерение состоит в том, чтобы иметь определенные перехватчики аудита / ведения журнала для всех служб, предоставляемых приложением. Я нашел нечто подобное в Spring , где с помощью AOP можно настроить перехватчики на уровне сервиса. Я пытаюсь выяснить, поддерживает ли JEE 6 какие-либо подобные функции

Ответ №1:

Вы не можете избежать необходимости указывать перехватчик в каждом файле ejb-jar, нет возможности определить его на уровне уха. Класс Interceptor должен быть упакован в тот же файл ejb-jar, что и все компоненты, которые его используют.

Вы все еще можете извлечь код перехватчика в общую библиотеку, используемую всеми модулями ejb, но, тем не менее, в каждом файле ejb-jar вы должны определить и активировать отдельный перехватчик, вызывающий общую реализацию.