2017-07-05 11 views
1

OSGiモジュールAがPostConstructにイベントEAを生成しています。リスナーがFelixイベント管理者に登録される前にOsgiモジュールによって生成されたイベントを処理する方法

私は別のOSGiモジュールBを持っています。このモジュールは、いくつかの操作を実行するためにイベントEAに依存しています。

しかし、モジュールBがロードされ、したがって、ロードされたモジュールAFelix Event Adminへのイベントリスナーを登録して、すでにイベントEAが生成されます。

したがって、特定のタイムアウト値の間、イベントEAを待ってから、モジュールBが失敗します。

モジュールBのリスナーが登録される前に、生成されたすべてのイベントにアクセスする方法はありますか?

私はOSGiService(waitTimeout = 1000)を使ってみましたが、これはサービスが利用可能になるのを待っていますが、そのメソッドが実行を終了するのを待っていません。

ありがとうございました。

+0

おそらく、AをBの読み込みのためにOSGiで聴いて、イベントEAを生成します。 Bロードが可能になるまで待つことができない場合は、イベントが格納されるイベントストアが必要です(ロードされたときにBによって選択される)が、これは簡単ではありません。 AをBの読み込みのフレームワークに耳を傾けてイベントを生成することは、既に他の目的のために以前にそれらを起動したとしても、より良いものになります。 – SomeDude

答えて

1

イベント管理者が実際にやっていることのための正しいツールではないように思えますが、これはイベントより永続的なメッセージングによく似ています。

イベントモデルは、いずれかの必要があります。

  • は、彼らがイベントストリームに参加するとき気にしないリスナーを持っている、または

  • それぞれ開始し、各リスナーに対して個別のイベントストリームを維持リスナーはリスナーは、すべての利用可能と準備が整うまで、イベントの配信を開始ない

  • に参加し

特定の時刻に「イベント」を送信する必要があるが、リスナーを待つことができない場合は、永続メッセージングの実装(JMSなど)が必要です。このようにしてリスナーが起動すると、開始中にキューに入れられたメッセージを処理することができます。

関連する問題