Событие в @Stateless EJB - PullRequest
       30

Событие в @Stateless EJB

1 голос
/ 27 июля 2011

У меня есть компонент сеанса без сохранения состояния (java ee 6, cdi), который генерирует события

@Stateless
public class CustomerService {
@Inject @ErrorMessage Event<BaseEvent> errMsg;
//[...]
public Customer getCustomer(String username, String password) {
    Customer cust = null;
    try {
    //[...]
    } catch (Exception ex) {
        errMsg.fire(new BaseEvent("user not found [username="+username+"]"));
    }

Этот компонент является частью ejb-модуля.С другой стороны, у меня есть два наблюдателя, которые слушают эти события.Они выглядят так:

public void showErrorMessage(@Observes @ErrorMessage BaseEvent event) {
    //do something with the event.
}

Один наблюдатель тоже находится в модуле ejb.Другой наблюдатель находится в военном модуле.«Ejb» -обозреватель перехватывает этот вызов, другой нет.

Если невозможно отправить событие из ejb-модуля в war-модуль?

Примечание: от war-модуля до ejb-модуля это возможно.

1 Ответ

0 голосов
/ 29 июля 2011

Это может быть связано с тем, является ли видимость загрузчика классов из одного модуля в другой также асимметричной.Поэтому, если WAR не виден из POV загрузчика классов, BeanManager в этой WAR не думает, что кто-то еще @ наблюдает за ним, потому что он не обязан иметь отсканированные модули, которые не видны.

...