如何使用继承和CDI事件列表?

fae*_*anj 8 events java-ee cdi java-ee-6 jboss-weld

是否可以在CDI事件中使用类型差异?这是案例:

  • 假设我有一个根事件类型MyEvent和子类DummyEvent
  • 我的目标是处理从远程源接收的事件列表List<? extends MyEvent>,其中包含DummyEvent实例

我怎样才能做到这一点?

如果我遍历调用fire()每个事件的集合,它将调用@Observes MyEvent evt但不调用@Observes DummyEvent evt方法.

**更新**

创建示例代码以阐明问题:

https://github.com/jfaerman/jfaerman/blob/master/test-cdi/src/main/java/jfaerman/App.java

我希望事件被激发两次,一次单独一次,一次从列表中.

fae*_*anj 3

它可以注入 BeanManager 而不是 Event,正如这个 servlet 所测试的:

https://github.com/jfaerman/cdi-tests/blob/master/src/main/java/jfaerman/TestEventsServlet.java

Jozef Hartinger 在 Weld 论坛的这个帖子中回答:

https://community.jboss.org/message/716185