複数のバックエンドモジュール(EJB)といくつかのWebモジュール(WAR)を含むエンタープライズアプリケーションアーカイブ(EAR)があります。EARとしてパッケージ化されたWAR内のCDIイベントを監視することは可能です
イベントは、バックエンドモジュールの1の内側にトリガーされます:それは、このようなコードで、他のバックエンドモジュールのいずれにおいても観察することができ
@Inject private Event<MyEvent> myEvent;
...
public void fireEvent() {
myEvent.fire(new MyEvent());
}
...
:
public void listener(@Observes MyEvent myEvent) {
..
}
しかし、私はできませんWAR内のイベントを取得します。これは、クラスローダーの可視性(WARのクラスはEJBには見えません)、またはCDIがこれを処理する必要があるためですか?
CDIをアプリケーション全体のイベントに使用できない場合、代替手段は何ですか?
- JMS
- グアバEventBus
- ...
はCDIで動作するものはありますか?おそらく、イベントをWARに橋渡しするCDI拡張がありますか?
----------- EDIT:
私はそれは同じWAR内で発射された場合、イベントを観察することができています。 また、イベントリスナーとして@Stateless Beanを成功せずに使用しようとしました。 (イベントはここでトリガーされます)
- EAR
- WAR(イベントはここで観察されなければならない)
- WAR
- EJB:
パッケージングは、このようなものです
ファイルを使用すると、 '/ WEB-INF/beans.xml' –
を持ってはい... beans.xmlのファイルが所定の位置にあります。 – psartini
WARイベントリスナー(インスタンス化して使用する方法を理解するためのもので、おそらくCDIはBeanインスタンスを認識していません...)を投稿してください。詳細なパッケージ記述も役立ちます。 –