Package nablarch.fw.handler
Class LoopHandler
public class LoopHandler
extends TransactionEventCallback.Provider<Object>
implements Handler<Object,Result>
ループ制御ハンドラークラス。
本ハンドラは、アプリケーションが処理すべきデータが存在する間、後続のハンドラに対して繰り返し処理を委譲する。
処理すべきデータが存在するかは、
ExecutionContext.hasNextData()
により判断する。
また、本ハンドラではトランザクション制御もあわせて行う。
トランザクションは、指定間隔(setCommitInterval(int)
毎にコミット処理を行う。
後続ハンドラから例外が送出された場合には、未コミットのトランザクションを全てロールバックし、例外を再送出する。
本ハンドラの事前ハンドラとして、DbConnectionManagementHandler
を登録すること。-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionhandle
(Object data, ExecutionContext context) 入力データに対する処理を実行する。static final boolean
現在のリクエストループの業務アクション実行後にLoopHandlerによるコミットが行われるか否か。 本メソッドは DataReadHandler よりも後ろで呼び出された場合のみ正しい結果が得られる。setCommitInterval
(int commitInterval) コミット間隔を設定する。setTransactionFactory
(TransactionFactory transactionFactory) トランザクションオブジェクトを取得するためのファクトリを設定する。void
setTransactionName
(String transactionName) このハンドラが管理するトランザクションの、スレッドコンテキスト上での登録名を設定する。boolean
shouldStop
(ExecutionContext context) 現在の処理終了後にループを止める場合にtrueを返す。Methods inherited from class nablarch.fw.TransactionEventCallback.Provider
callAbnormalEndHandlers, callNormalEndHandlers, prepareListeners
-
Constructor Details
-
LoopHandler
public LoopHandler()
-
-
Method Details
-
handle
入力データに対する処理を実行する。 この実装では、特定の条件を満たすまで、以降のハンドラキューの内容を 繰り返し処理する。 -
shouldStop
現在の処理終了後にループを止める場合にtrueを返す。 デフォルトの実装では、実行コンテキスト上のデータリーダのデータが 空になるまで繰り返し処理を行う。 これと異なる条件でループを停止させたい場合は、本メソッドをオーバライドすること。- Parameters:
context
- 実行コンテキスト- Returns:
- ループを止める場合はtrue
-
setTransactionFactory
トランザクションオブジェクトを取得するためのファクトリを設定する。- Parameters:
transactionFactory
- トランザクションオブジェクトを取得するためのファクトリ- Returns:
- このハンドラ自体
-
setTransactionName
このハンドラが管理するトランザクションの、スレッドコンテキスト上での登録名を設定する。デフォルトでは既定のトランザクション名 (
TransactionContext.DEFAULT_TRANSACTION_CONTEXT_KEY
)を使用する。- Parameters:
transactionName
- データベース接続のスレッドコンテキスト上の登録名
-
setCommitInterval
コミット間隔を設定する。 コミット間隔を指定した場合、指定した間隔でコミットが行われる。 なお、0以下の値を設定した場合や、設定を省略した場合のコミット間隔は1となる。- Parameters:
commitInterval
- コミット間隔- Returns:
- このハンドラ自体
-
isAboutToCommit
現在のリクエストループの業務アクション実行後にLoopHandlerによるコミットが行われるか否か。 本メソッドは DataReadHandler よりも後ろで呼び出された場合のみ正しい結果が得られる。- Parameters:
ctx
- 実行コンテキスト- Returns:
- 業務アクション実行後にコミットが行われる場合は true
-