小编psa*_*ini的帖子

当打包为EAR时,是否可以在WAR内观察CDI事件

我有一个包含多个后端模块(EJB)的企业应用程序归档(EAR)以及一些Web模块(WAR).

事件在其中一个后端模块中被触发:

@Inject private Event<MyEvent> myEvent;
...
public void fireEvent() {
  myEvent.fire(new MyEvent());
}
...
Run Code Online (Sandbox Code Playgroud)

可以在任何其他后端模块中观察到这样的代码:

public void listener(@Observes MyEvent myEvent) {
..
}
Run Code Online (Sandbox Code Playgroud)

但是我无法在WAR中检索事件.这是因为类加载器可见性(来自WAR的类对EJB不可见)还是CDI应该处理这个问题?

如果CDI不能用于应用程序范围的事件,有哪些替代方案?

  • JMS
  • 番石榴EventBus
  • ...

有什么与CDI有效吗?也许某些CDI扩展将事件连接到WAR?

-----------编辑:

如果它在同一个WAR中被触发,我能够观察到该事件.此外,我尝试使用@Stateless bean作为事件侦听器,但没有成功.

包装是这样的:

    • WAR(应在此处观察事件)
    • 战争
    • EJB(事件在这里被触发)

java ear war java-ee cdi

7
推荐指数
1
解决办法
1761
查看次数

标签 统计

cdi ×1

ear ×1

java ×1

java-ee ×1

war ×1