Package nablarch.fw.handler
Class MultiThreadExecutionHandler
java.lang.Object
nablarch.fw.handler.MultiThreadExecutionHandler
- All Implemented Interfaces:
- Handler<Object,- Result.MultiStatus> 
後続ハンドラの処理を子スレッドを用いて実行するハンドラ。
 
 本ハンドラ以降の処理は、新たに作成する子スレッド上で実行される。
 これにより、後続スレッドの処理に対するタイムアウトの設定や、
 停止要求(graceful-termination)を行うことが可能となる。
 
 また、並行実行数を設定することにより、後続処理を複数のスレッド上で並行実行する
 ことができる。(デフォルトの並行実行数は1)
 
 このハンドラでは、全てのスレッドで単一のデータリーダインスタンスを共有する。
 従って、データリーダがアクセスするリソースに対する同期制御は各データリーダ側
 で担保されている必要がある。
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionhandle(Object data, ExecutionContext context) 入力データに対する処理を実行する。voidsetCommitLogger(CommitLogger commitLogger) コミットログ出力オブジェクトを設定する。setConcurrentNumber(int concurrentNumber) 並行実行スレッド数を設定する。setTerminationTimeout(int terminationTimeout) 処理停止要求のタイムアウト秒数を設定する。
- 
Constructor Details- 
MultiThreadExecutionHandlerpublic MultiThreadExecutionHandler()
 
- 
- 
Method Details- 
handle入力データに対する処理を実行する。 この実装では、実行コンテキストのクローンを作成し、後続のハンドラ処理を並列実行する。 後続処理のいずれかのスレッドにおいて例外が発生した場合は、 処理中の全スレッドに対して中止要求(interruption)をかけ、その完了を待つ。 スレッド停止後、各スレッドでの処理状況の詳細をログに出力した後、 元例外をラップした Result.InternalError を送出する。 ただし、中止要求後、terminationTimeout値に指定された秒数を過ぎても完了しない スレッドがあった場合は、当該スレッドの停止を断念しリターンする。- Specified by:
- handlein interface- Handler<Object,- Result.MultiStatus> 
- Parameters:
- data- 入力データ
- context- 実行コンテキスト
- Returns:
- 処理結果データ
 
- 
setConcurrentNumber並行実行スレッド数を設定する。 デフォルト値は1である。- Parameters:
- concurrentNumber- 並行実行スレッド数
- Returns:
- このハンドラ自体
 
- 
setTerminationTimeout処理停止要求のタイムアウト秒数を設定する。 デフォルト値は 600秒 である。- Parameters:
- terminationTimeout- 処理停止要求のタイムアウト秒数
- Returns:
- このハンドラ自体。
 
- 
setCommitLoggerコミットログ出力オブジェクトを設定する。- Parameters:
- commitLogger- コミットログ出力オブジェクト
 
 
-