Package nablarch.common.handler
Class TransactionManagementHandler
java.lang.Object
nablarch.fw.TransactionEventCallback.Provider<Object>
nablarch.common.handler.TransactionManagementHandler
- All Implemented Interfaces:
Handler<Object,
,Object> InboundHandleable
,OutboundHandleable
public class TransactionManagementHandler
extends TransactionEventCallback.Provider<Object>
implements Handler<Object,Object>, InboundHandleable, OutboundHandleable
後続処理における透過的トランザクションを実現するハンドラ。
通常の として使用する場合と、 として使用する場合で動作が異なる。
コミットとロールバックの判定は、 isProcessSucceded が true を返すか false を返すかで判定する。
通常の として使用する場合と、 として使用する場合で動作が異なる。
として使用する場合、本ハンドラの詳細な処理内容は以下の通り。 1. トランザクションファクトリから使用するトランザクションオブジェクトを取得し、として使用する場合、Inbound処理の際にトランザクションを開始し、 Outbound処理の際にトランザクションをコミットまたはロールバックする。TransactionContext
上に設定する。 2. トランザクションを開始する。 3. ハンドラスタックから次のリクエストハンドラを取得し、処理を委譲する。 4a. 委譲先の処理において例外が発生しなければトランザクションをコミットする。 4b. 例外が発生した場合はトランザクションをロールバックする。 ただし、このとき送出された例外が、setTransactionCommitExceptions(java.util.List)
で設定された例外の いずれかのサブクラスである場合はトランザクションをコミットする。 5. トランザクションオブジェクトをTransactionContext
から除去する。 設定例:
<component class="nablarch.common.handler.TransactionManagementHandler"> <!-- トランザクションファクトリ --> <property name="transactionFactory" value="transactionFactory"/> <!-- トランザクションをコミットする例外 --> <property name="transactionCommitExceptions"> <list> <value>example.TransactionCommitException</value> <value>example.TransactionCommitException2</value> </list> </property> </component>
コミットとロールバックの判定は、 isProcessSucceded が true を返すか false を返すかで判定する。
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionhandle
(Object inputData, ExecutionContext ctx) 入力データに対する処理を実行する。handleInbound
(ExecutionContext context) 前処理を実装する。handleOutbound
(ExecutionContext context) 後処理を実装する。protected boolean
isCompleteTransaction
(ExecutionContext context) トランザクションが正常終了したかどうかを判定する。
この実装では、ExecutionContext#isProcessSucceded() がtrueを返すかどうかで、判定を行う。void
setTransactionCommitExceptions
(List<String> exceptionClassNames) 送出されてもトランザクションをコミットしなければならない例外クラスの一覧を設定する。void
setTransactionFactory
(TransactionFactory transactionFactory) トランザクションオブジェクトを取得するためのファクトリを設定する。void
setTransactionName
(String transactionName) このハンドラが管理するトランザクションの、スレッドコンテキスト上での登録名を設定する。Methods inherited from class nablarch.fw.TransactionEventCallback.Provider
callAbnormalEndHandlers, callNormalEndHandlers, prepareListeners
-
Constructor Details
-
TransactionManagementHandler
public TransactionManagementHandler()
-
-
Method Details
-
setTransactionFactory
トランザクションオブジェクトを取得するためのファクトリを設定する。- Parameters:
transactionFactory
- トランザクションオブジェクトを取得するためのファクトリ
-
setTransactionName
このハンドラが管理するトランザクションの、スレッドコンテキスト上での登録名を設定する。デフォルトでは既定のトランザクション名 (
TransactionContext.DEFAULT_TRANSACTION_CONTEXT_KEY
)を使用する。- Parameters:
transactionName
- データベース接続のスレッドコンテキスト上の登録名
-
setTransactionCommitExceptions
送出されてもトランザクションをコミットしなければならない例外クラスの一覧を設定する。指定可能な例外は実行時例外(RuntimeExceptionのサブクラス)のみである。 なにも指定しなかった場合はいかなる例外についてもロールバックする。
- Parameters:
exceptionClassNames
- 送出されてもトランザクションをコミットしなければならない例外クラスの一覧
-
handle
入力データに対する処理を実行する。このクラスの実装では後続ハンドラに対する処理委譲の前後に、 データベース接続オブジェクトの初期化と終了の処理をそれぞれ行う。
-
handleInbound
Description copied from interface:InboundHandleable
前処理を実装する。- Specified by:
handleInbound
in interfaceInboundHandleable
- Parameters:
context
- ExecutionContext- Returns:
- 処理結果オブジェクト
-
handleOutbound
Description copied from interface:OutboundHandleable
後処理を実装する。- Specified by:
handleOutbound
in interfaceOutboundHandleable
- Parameters:
context
- ExecutionContext- Returns:
- 処理結果オブジェクト
-
isCompleteTransaction
トランザクションが正常終了したかどうかを判定する。
この実装では、ExecutionContext#isProcessSucceded() がtrueを返すかどうかで、判定を行う。- Parameters:
context
- ExecutionContext- Returns:
- 正常終了した場合 true
-