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 オブジェクトは、コミットの準備フェーズの直前にコールバックを受信し、トランザクションの完了直後にコールバックを受け取ります。