Я предполагаю, что вы имеете в виду аннотацию @Interceptors
(множественное число), которая определяет класс перехватчика, который будет вызываться при вызове аннотированного метода.@Interceptor
аннотация (в единственном числе) предназначена для аннотирования класса, который является перехватчиком.
Если это так, короткий ответ: no .
Перехватчик выполняетсяконтейнер.Если ваш вызов метода не пройдет через контейнер, то он не будет перехвачен.
Поэтому следующий вызов ejbMethod1()
:
@Interceptors(MyInterceptClass.class)
public void ejbMethod2() {
ejbMethod1();
}
won 't MyInterceptClass
активировать, так как это локальный вызов (не EJB).
Если вы хотите снова вызвать перехватчик, вам следует использовать бизнес-интерфейс, например:
// Somewhere in the class
@Resource
SessionContext ctx;
@Interceptors(MyInterceptClass.class)
public void ejbMethod2() {
// This is explicit call which will go through the EJB Container
ctx.getBusinessObject(YourEJBClass.class).ejbMethod1();
}
Это сделает вызов с поддержкой EJB и ударит перехватчик.при вызове ejbMethod1()
.