EJB3 Bean で構成される Java EE 6 アプリケーションの一部を設計しています。要件の一部は、複数の並列 (たとえば、数百) の長時間実行 (数日にわたる) データベース ハントです。個々のハントには、異なる検索パラメーター (開始時刻、終了時刻、クエリ フィルター) があります。パラメータは時間の経過とともに変更される場合があります。
現在、以下のことを考えています。
SearchController
(ステートレス セッション Bean) は、一連の検索パラメータを作成し、SearchListener
JMS 経由で送信します。SearchListener
(メッセージ駆動型 Bean) は検索パラメーターを受け取りSearchWorker
、パラメーターを使用して をインスタンス化しますSearchWorker
(SLSB) データベースを繰り返し検索します。何かが見つかると、結果が JMS 経由で送信され、検索が続行されます。指定された「終了時間」に達すると、終了します
私が今疑問に思っていること:
- EJB3 インスタンスが何日も実行されていることに問題はありますか? (それ以外は、コンテナの再起動に対処できる必要があります...)
SearchWorker
現在実行中の の EJB インスタンスの数と数を知るにはどうすればよいですか?- それらと個別に通信することは可能ですか (System V シグナルを UNIX プロセスに送信するのと同様)、たとえば、新しいパラメーターを送信したり、インスタンスを終了したりすることはできますか?