@Stateless EJB中的事件

时间:2011-07-27 13:54:32

标签: events java-ee-6 cdi

我有一个无状态会话Bean(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+"]"));
    }

这个bean是ejb模块的一部分。另一方面,我有两个事件观察员来监听这些事件。他们看起来像

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

一位观察者也在ejb-modul中。另一个观察者在战争模块中。 “ejb”-observer在另一个没有接到这个电话。

如果无法将事件从ejb模块发送到war-module?

注意:从war-module到ejb-module,它是可能的。

1 个答案:

答案 0 :(得分:0)

这可能归结为从一个模块到另一个模块的类加载器可见性是否也是不对称的。因此,如果从类加载器POV中看不到WAR,则该WAR中的BeanManager认为没有其他人@observing它,因为他不需要扫描不可见的模块。