У меня есть CDI Sterotypes, который содержит некоторые из InterceptorBinding, как показано ниже: -
@Inherited
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({
ElementType.METHOD,
ElementType.TYPE})
@Documented
public @interface MyInterceptable {
}
@Interceptor
@MyInterceptable
public class MyInterceptor {
@AroundInvoke
public Object perform(InvocationContext context) throws Exception {
log.info("My Interceptor begin.");
Object result =context.proceed();
log.info("My Interceptor end.");
return result;
}
}
@Stereotype
@MyInterceptable
@Retention(RetentionPolicy.RUNTIME)
@Target({
ElementType.TYPE
})
@Documented
public @interface MyStereoable {
}
Когда я определяю этот Sterotype в не-EJB, он работает правильно.Сообщение печатается до и после выполнения do-1 ().
@Singleton
@MyStereoable
public class MyCustomized {
public void doning1(){
//print something.
}
}
Во всяком случае, когда я пытался использовать это с EJB без сохранения состояния, оно не работало.Перехватчик не печатает никаких сообщений.
@Remote
public interface HelloServiceable extends Serializable {
void doning2();
}
@Stateless
@MyStereoable
public class HelloService implements HelloServiceable {
public void doing2() {
//Print something
}
}
Затем я смешиваю случай 1 и случай 2 следующим образом: -
@Stateless
@MyStereoable
public class HelloService implements HelloServiceable {
@Inject
private MyCustomized myBean;
public void doing2() {
this.myBean.doing1();
//Print something
}
}
Может быть перехвачен MyCustomized, и сообщениенапечатан, но не для EJB без гражданства.
Я не уверен, неправильно ли я понимаю или запутался насчет CDI и EJB или нет.Не могли бы вы помочь проконсультировать дальше?Большое спасибо за вашу помощь заранее.Я с нетерпением жду вашего ответа.
С уважением,
Чарли Ч.