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