Events @无状态EJB中的事件

Events @无状态EJB中的事件,events,java-ee-6,cdi,Events,Java Ee 6,Cdi,我有一个无状态会话Bean(JavaEE6,cdi),它抛出事件 @Stateless public class CustomerService { @Inject @ErrorMessage Event<BaseEvent> errMsg; //[...] public Customer getCustomer(String username, String password) { Customer cust = null; try { //[...]

我有一个无状态会话Bean(JavaEE6,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模块中也有一个观察者。另一个观察员在一个作战舱里。“ejb”——观察者捕捉到这个调用而不是另一个

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


注意:从war模块到ejb模块是可能的

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

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

为什么要分离这些类?因为您使用的是JEE6,所以您可以在WEB-INF/classes下拥有所有内容。据我所知,在应用程序的这一部分中我需要JMS。JMS在“web”项目中不起作用。请纠正我,如果我错了,很抱歉反应太晚-这取决于你所说的“网络项目”是什么意思。如果您提到使用web概要文件,这是应用程序服务器上的一组简化API,那么这是正确的,JMS不是其中的一部分。但是如果你有一个标准的JEE-the-full-profile,你可以在一场战争中打包所有东西(不管你真的有一个web应用程序还是一个后端应用程序),然后你就不必分离EJB和其他代码了。你为什么要分离这些类?因为您使用的是JEE6,所以您可以在WEB-INF/classes下拥有所有内容。据我所知,在应用程序的这一部分中我需要JMS。JMS在“web”项目中不起作用。请纠正我,如果我错了,很抱歉反应太晚-这取决于你所说的“网络项目”是什么意思。如果您提到使用web概要文件,这是应用程序服务器上的一组简化API,那么这是正确的,JMS不是其中的一部分。但是如果你有一个标准的JEE-the-full-profile,你可以在一场战争中打包所有东西(不管你是真的有一个web应用程序还是只是一个后端应用程序),这样你就不必分离EJB和其他代码。
public void showErrorMessage(@Observes @ErrorMessage BaseEvent event) {
    //do something with the event.
}