【发布时间】:2011-07-27 13:54:32
【问题描述】:
我有一个抛出事件的无状态会话 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 到 ejb-module 是可能的。
【问题讨论】:
-
你为什么要分班?由于您使用的是 JEE 6,因此您可以拥有 WEB-INF/classes 下的所有内容。
-
据我所知,我在这部分应用程序中需要 JMS。 JMS 在“网络”项目中不起作用。纠正我,如果我错了
-
抱歉,回复晚了 - 取决于您所说的“网络项目”是什么意思。如果您指的是使用 web 配置文件,它是应用程序服务器上的一组精简 API,那么这是正确的,JMS 不是其中的一部分。但是如果你有一个标准的 JEE - 完整的 - 配置文件,你可以将所有东西打包在一个 WAR 中(无论你是真的有一个 web 应用程序还是只是一个后端应用程序),然后你就不必分离 EJB 和其他代码.