1

抽象的な質問

Java アプリケーション サーバーのサーブレット間で共有されるメモリにリソースをロードする最良の方法は何ですか?

私が実際に行っていること

キューを監視するデーモン スレッドを作成したいと考えています。このキューには、サーブレット スレッドからオブジェクトが追加される可能性があります。スレッドは一定時間待機し、キューにアイテムがあるかどうかを確認し、アイテムがある場合はそれらを処理して削除します。このスレッドは、いつかどこかで開始する必要があります。init メソッドのみが実装されたサーブレットがこのタスクで機能すると考えていましたが、アプリケーション サーバーにこのようなスタートアップ コードを配置するのに適した場所はありますか? 私はすべて不安定な問題に近づいていますか?

アップデート

私はこの質問を見つけました。受け入れられた答えは、LifeCycle Listener を使用することでした。これは移植可能な方法ですか、それとも私のコードは単一のアプリケーションサーバーに結び付けられますか? もう少し調査した結果、メッセージ ボードで、ServletContextListener実装でこれを実行できるという投稿をいくつか見つけました。

4

1 に答える 1

2

私は通常、これらの種類のワーカー スレッドを、説明した方法を使用してサーブレットから間接的に開始します (通常、キューの抽出を行い、処理を制御する他のオブジェクト内に存在します)。

スレッドからオブジェクトを引き出すために、時間に基づいてそれを行う必要はありません.キューオブジェクトにスレッドをwait()させることができ、オブジェクトが他のスレッドによってキューに置かれると、そのスレッドはnotifyを呼び出します. () をキューに追加して、監視している「ワーカー」スレッドを解放します。

多くの例については、Google の「Java ワーカー スレッド待機通知」を参照してください。

于 2010-11-22T01:01:56.247 に答える