2

私はJava1.6でjbossAS4.2を実行していますが、問題は次のとおりです。アプリケーションが耳として配布され、いくつかのサーブレットを含む戦争が発生します。これらのサーブレットは、必要なEJBを呼び出し、何らかの処理を行ってから結果を返します。

タイムアウトを決定する方法を探しています。これは、処理に時間がかかりすぎる場合に備えて、処理を返し、処理を終了するだけです(処理には複数のEJBが含まれます)。

ThreadLocalを使用して、各メソッドの先頭で時間を超えたかどうかを確認するコードを追加できますが、そのようなコードをアプリケーションに追加せずに使用できる他のメカニズムはありますか?

どんなアイデア/参考資料も良いでしょう。

4

1 に答える 1

1

さまざまな方法があるかもしれませんが、あなたの要求に基づいて私の頭に浮かぶ最初のことはインターセプターです。

問題のある(おそらく長時間の呼び出し)をすべて傍受し、時間を超えた場合に例外をスローするようにします。

そして、はい、threadlocalは開始時間を維持するための仕事をすることができます(非同期のステートレスセッションBean呼び出しを使用しない場合)。

インターセプターの機能については、http ://www.adam-bien.com/roller/abien/entry/interceptors_ejb_3_for_absoluteを参照してください。

このソリューションの主な利点は、タイムアウト機能(Interceptor内)をビジーネスロジック(EJB内)から明確に分離できることです。

于 2013-01-15T16:37:46.040 に答える