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()
一時停止されたトランザクションを現在のスレッドコンテキストに再割り当てします。このメソッドを呼び出した後、トランザクションコンテキストが復元され、この時点以降に実行するすべての作業がトランザクションのコンテキストで実行されます。