public class TransactionManagementHandler extends TransactionEventCallback.Provider<java.lang.Object> implements Handler<java.lang.Object,java.lang.Object>, InboundHandleable, OutboundHandleable
として使用する場合、本ハンドラの詳細な処理内容は以下の通り。
1. トランザクションファクトリから使用するトランザクションオブジェクトを取得し、
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>
として使用する場合、Inbound処理の際にトランザクションを開始し、
Outbound処理の際にトランザクションをコミットまたはロールバックする。| コンストラクタと説明 |
|---|
TransactionManagementHandler() |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
java.lang.Object |
handle(java.lang.Object inputData,
ExecutionContext ctx)
入力データに対する処理を実行する。
|
Result |
handleInbound(ExecutionContext context)
前処理を実装する。
|
Result |
handleOutbound(ExecutionContext context)
後処理を実装する。
|
protected boolean |
isCompleteTransaction(ExecutionContext context)
トランザクションが正常終了したかどうかを判定する。
|
void |
setTransactionCommitExceptions(java.util.List<java.lang.String> exceptionClassNames)
送出されてもトランザクションをコミットしなければならない例外クラスの一覧を設定する。
|
void |
setTransactionFactory(TransactionFactory transactionFactory)
トランザクションオブジェクトを取得するためのファクトリを設定する。
|
void |
setTransactionName(java.lang.String transactionName)
このハンドラが管理するトランザクションの、スレッドコンテキスト上での登録名を設定する。
|
callAbnormalEndHandlers, callNormalEndHandlers, prepareListenerspublic void setTransactionFactory(TransactionFactory transactionFactory)
transactionFactory - トランザクションオブジェクトを取得するためのファクトリpublic void setTransactionName(java.lang.String transactionName)
デフォルトでは既定のトランザクション名
(TransactionContext.DEFAULT_TRANSACTION_CONTEXT_KEY)を使用する。
transactionName - データベース接続のスレッドコンテキスト上の登録名public void setTransactionCommitExceptions(java.util.List<java.lang.String> exceptionClassNames)
指定可能な例外は実行時例外(RuntimeExceptionのサブクラス)のみである。 なにも指定しなかった場合はいかなる例外についてもロールバックする。
exceptionClassNames - 送出されてもトランザクションをコミットしなければならない例外クラスの一覧public java.lang.Object handle(java.lang.Object inputData,
ExecutionContext ctx)
このクラスの実装では後続ハンドラに対する処理委譲の前後に、 データベース接続オブジェクトの初期化と終了の処理をそれぞれ行う。
public Result handleInbound(ExecutionContext context)
InboundHandleablehandleInbound インタフェース内 InboundHandleablecontext - ExecutionContextpublic Result handleOutbound(ExecutionContext context)
OutboundHandleablehandleOutbound インタフェース内 OutboundHandleablecontext - ExecutionContextprotected boolean isCompleteTransaction(ExecutionContext context)
context - ExecutionContext