5.3. トランザクションオブジェクトの使用
トランザクションを一時停止または再開する必要がある場合、またはリソースを明示的に登録する必要がある場合、javax.transaction.Transaction
オブジェクトを直接使用する必要がある場合があります。で説明したように「XA 登録の問題解決」、フレームワークまたはコンテナーは通常、リソースの登録を自動的に処理します。
5.3.1. トランザクションインターフェイスの定義
JTA Transaction
インターフェイスの定義は以下のとおりです。
interface javax.transaction.Transaction { public void commit(); public void rollback(); public void setRollbackOnly(); public int getStatus(); public boolean enlistResource(XAResource xaRes); public boolean delistResource(XAResource xaRes, int flag); public void registerSynchronization(Synchronization sync); }
5.3.2. トランザクションメソッドの説明
commit()
、rollback()
、setRollbackOnly()
、および getStatus()
メソッドは、UserTransaction
インターフェイスからの該当のメソッドと同じ動作をします。実際、UserTransaction
オブジェクトは現在のトランザクションを取得し、Transaction
オブジェクトで対応するメソッドを呼び出す便利なラッパーです。
また、Transaction
インターフェイスは、UserTransaction
インターフェイスにカウンターがない以下のメソッドを定義します。
- enlistResource()
XA リソースを現在のトランザクションに関連付けます。
注記この方法は、XA トランザクションのコンテキストで非常に重要です。XA トランザクションを特徴とする現在のトランザクションを使用して複数の XA リソースを登録する機能です。一方、リソースを明示的に登録するのは面倒であり、通常、フレームワークまたはコンテナーがこれを行うことを想定します。たとえば、「XA 登録の問題解決」 を参照してください。
- delistResource()
トランザクションから、指定されたリソースの関連付けを解除します。flag 引数は、
javax.transaction.Transaction
インターフェイスで定義される以下の整数値のいずれかを取ることができます。-
TMSUCCESS
-
TMFAIL
-
TMSUSPEND
-
- registerSynchronization()
-
javax.transaction.Synchronization
オブジェクトを現在のトランザクションに登録します。Synchronization
オブジェクトは、コミットの準備フェーズの直前にコールバックを受信し、トランザクションの完了直後にコールバックを受け取ります。