Стереотип CDI не работает с EJB Session Bean - PullRequest
0 голосов
/ 19 декабря 2011

У меня есть 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 или нет.Не могли бы вы помочь проконсультировать дальше?Большое спасибо за вашу помощь заранее.Я с нетерпением жду вашего ответа.

С уважением,

Чарли Ч.

1 Ответ

0 голосов
/ 06 июля 2012

Я изменил свой проект с EAR / EJB на автономный веб-проект.Стереотип CDI теперь работает с EJB Session Bean.

Я создал небольшую демонстрацию на github .Пожалуйста, обратите внимание, он использует JBoss Arquillian для тестирования.

Я надеюсь, что эта информация может быть полезна.

...