5.2. TransactionManager オブジェクトの使用
javax.transaction.TransactionManager
オブジェクトを使用する最も一般的な方法は、フレームワーク API (例: Camel JMS コンポーネント) に渡すことです。これにより、フレームワークがトランザクションの境界を管理できるようになります。TransactionManager
オブジェクトを直接使用する必要がある場合があります。これは、suspend()
や resume()
メソッドなどの高度なトランザクション API にアクセスする必要がある場合に役立ちます。
5.2.1. TransactionManager インターフェイスの定義
JTA TransactionManager インターフェイスの定義は以下のとおりです。
interface javax.transaction.TransactionManager { // Same as UserTransaction methods public void begin(); public void commit(); public void rollback(); public void setRollbackOnly(); public int getStatus(); public void setTransactionTimeout(int seconds); // Extra TransactionManager methods public Transaction getTransaction(); public Transaction suspend() ; public void resume(Transaction tobj); }
5.2.2. TransactionManager メソッドの説明
TransactionManager
インターフェイスは、UserTransaction
インターフェイスにあるすべてのメソッドをサポートします。トランザクションのデマケーションには TransactionManager
オブジェクトを使用できます。さらに、TransactionManager
オブジェクトは以下のメソッドをサポートします。
- getTransaction()
-
現在のトランザクションへの参照を取得します。これは、現在のスレッドに関連付けられているトランザクションです。現在のトランザクションがない場合は、このメソッドは
null
を返します。 - suspend()
現在のスレッドから現在のトランザクションをデタッチし、トランザクションへの参照を返します。このメソッドの呼び出し後、現在のスレッドにはトランザクションコンテキストがなくなります。この時点以降に行った作業は、トランザクションのコンテキストでは行われなくなります。
注記すべてのトランザクションマネージャーがトランザクションの一時停止をサポートしているわけではありません。この機能は Narayana でサポートされています。
- resume()
- 一時停止されたトランザクションを現在のスレッドコンテキストに再割り当てします。このメソッドを呼び出した後、トランザクションコンテキストが復元され、この時点以降に実行するすべての作業がトランザクションのコンテキストで実行されます。