我有一个 Enterprise Application Archive (EAR),其中包含多个后端模块 (EJB) 以及一些 Web 模块 (WAR)。
事件在后端模块之一内被触发:
@Inject private Event<MyEvent> myEvent;
...
public void fireEvent() {
myEvent.fire(new MyEvent());
}
...
它可以在任何其他后端模块中观察到,代码如下:
public void listener(@Observes MyEvent myEvent) {
..
}
但我无法检索 WAR 中的事件。这是因为类加载器可见性(来自 WAR 的类对 EJB 不可见)还是应该由 CDI 处理?
如果 CDI 不能用于应用程序范围的事件,还有哪些替代方案?
- 管理系统
- 番石榴事件总线
- ...
有什么适用于 CDI 的吗?也许是一些将事件连接到 WAR 的 CDI 扩展?
- - - - - - 编辑:
如果它在同一个 WAR 中触发,我可以观察到该事件。我也尝试使用@Stateless bean 作为事件侦听器,但没有成功。
包装是这样的:
- 耳朵
- WAR(应在此处观察事件)
- 战争
- EJB(事件在这里被触发)