我在 CDI Events 上有点挣扎。我有一个几乎像这样实现为 CDI Singleton 的类:
import import javax.inject.Singleton;
@Singleton
public class MyClass{
@Inject
Event<StatusUpdateEvent> events;
public MyClass(){};
public void myMethod(){
events.fire(new StatusUpdateEvent());
}
}
然后我将我的消费者类实现为 EJB Singleton
import javax.ejb.Singleton;
@Singleton
public class MyObserver(){
public MyObserver(){};
public onStatusUpdateEvent(@Observes StatusUpdateEvent event){
...do something...
}
}
问题是当myMethod
被调用时,没有从 myObserver 接收到任何事件。
MyClass
包含在我的 EAR 项目的库 jar 中(jar 有 beans.xml),并且MyObserver
是同一 EAR 的 EJB。
我究竟做错了什么?非常感谢你的帮助!