JavaTM 2
Platform
Std. Ed. v1.4.0

javax.transaction.xa
インタフェース XAResource


public interface XAResource

XAResource インタフェースは、X/Open CAE 仕様 (分散トランザクション処理: XA 仕様) に基づく業界標準の XA インタフェースの Java マッピングです。

XA インタフェースは、分散トランザクション処理 (DTP) 環境でのリソースマネージャとトランザクションマネージャの間の規約を定義します。JDBC ドライバまたは JMS プロバイダはこのインタフェースを実装して、グローバルトランザクションとデータベースまたはメッセージサービス接続の間の関連付けをサポートします。

XAResource インタフェースは、トランザクションが外部のトランザクションマネージャによって制御される環境で、アプリケーションプログラムにより使用されるすべてのトランザクションリソースによってサポートできます。このようなリソースの例としては、データベース管理システムがあります。アプリケーションは複数のデータベース接続を介してデータにアクセスできます。各データベース接続は、トランザクションマネージャによってトランザクションリソースとして登録されます。トランザクションマネージャは、グローバルトランザクションに関連する各接続の XAResource を取得します。トランザクションマネージャは、start メソッドを使用してグローバルトランザクションをリソースに関連付け、end メソッドを使用してトランザクションとリソースの関連付けを解除します。リソースマネージャは、グローバルトランザクションを start メソッドの呼び出しと end メソッドの呼び出しの間にそのデータに対して実行されるすべての処理に関連付けます。

トランザクションのコミット時に、リソースマネージャは、2 段階のコミットプロトコルに従って、トランザクションを準備、コミット、またはロールバックするようトランザクションマネージャから通知されます。


フィールドの概要
static int TMENDRSCAN
          回復走査を終了します。
static int TMFAIL
          呼び出し側の関連付けを解除し、トランザクションの枝にロールバックのみのマークを付けます。
static int TMJOIN
          呼び出し側が既存のトランザクションの枝に参加します。
static int TMNOFLAGS
          TMNOFLAGS を使用して、フラグ値が選択されていないことを示します。
static int TMONEPHASE
          呼び出し側は 1 段階の最適化を使用します。
static int TMRESUME
          呼び出し側は中断されたトランザクションの枝との関連付けを再開します。
static int TMSTARTRSCAN
          回復走査を開始します。
static int TMSUCCESS
          呼び出し側とトランザクションの枝との関連付けを解除します。
static int TMSUSPEND
          呼び出し側はトランザクションの枝との関連付けを中断します (終了ではない)。
static int XA_OK
          トランザクション処理が正常に準備されました。
static int XA_RDONLY
          トランザクションの枝は読み込み専用であり、コミットされました。
 
メソッドの概要
 void commit(Xid xid, boolean onePhase)
          xid で指定されたグローバルトランザクションをコミットします。
 void end(Xid xid, int flags)
          トランザクションの枝のために実行された処理を終了します。
 void forget(Xid xid)
          経験則で完了したトランザクションの枝を無視するようにリソースマネージャに通知します。
 int getTransactionTimeout()
          この XAResource インスタンスに対して設定された現在のトランザクションタイムアウト値を取得します。
 boolean isSameRM(XAResource xares)
          このメソッドを呼び出して、ターゲットオブジェクトで表されるリソースマネージャインスタンスがパラメータ xares で表されるリソースマネージャインスタンスと同じかどうかを判定できます。
 int prepare(Xid xid)
          xid で指定されたトランザクションのトランザクションコミットの準備をリソースマネージャに問い合わせます。
 Xid[] recover(int flag)
          リソースマネージャから準備されたトランザクションの枝のリストを取得します。
 void rollback(Xid xid)
          トランザクションの枝のために実行された処理をロールバックするようリソースマネージャに通知します。
 boolean setTransactionTimeout(int seconds)
          この XAResource インスタンスの現在のトランザクションタイムアウト値を設定します。
 void start(Xid xid, int flags)
          xid で指定されたトランザクションの枝のための処理を開始します。
 

フィールドの詳細

TMENDRSCAN

public static final int TMENDRSCAN
回復走査を終了します。

関連項目:
定数フィールド値

TMFAIL

public static final int TMFAIL
呼び出し側の関連付けを解除し、トランザクションの枝にロールバックのみのマークを付けます。

関連項目:
定数フィールド値

TMJOIN

public static final int TMJOIN
呼び出し側が既存のトランザクションの枝に参加します。

関連項目:
定数フィールド値

TMNOFLAGS

public static final int TMNOFLAGS
TMNOFLAGS を使用して、フラグ値が選択されていないことを示します。

関連項目:
定数フィールド値

TMONEPHASE

public static final int TMONEPHASE
呼び出し側は 1 段階の最適化を使用します。

関連項目:
定数フィールド値

TMRESUME

public static final int TMRESUME
呼び出し側は中断されたトランザクションの枝との関連付けを再開します。

関連項目:
定数フィールド値

TMSTARTRSCAN

public static final int TMSTARTRSCAN
回復走査を開始します。

関連項目:
定数フィールド値

TMSUCCESS

public static final int TMSUCCESS
呼び出し側とトランザクションの枝との関連付けを解除します。

関連項目:
定数フィールド値

TMSUSPEND

public static final int TMSUSPEND
呼び出し側はトランザクションの枝との関連付けを中断します (終了ではない)。

関連項目:
定数フィールド値

XA_RDONLY

public static final int XA_RDONLY
トランザクションの枝は読み込み専用であり、コミットされました。

関連項目:
定数フィールド値

XA_OK

public static final int XA_OK
トランザクション処理が正常に準備されました。

関連項目:
定数フィールド値
メソッドの詳細

commit

public void commit(Xid xid,
                   boolean onePhase)
            throws XAException
xid で指定されたグローバルトランザクションをコミットします。

パラメータ:
xid - グローバルトランザクション識別子
onePhase - true の場合、リソースマネージャは 1 段階のコミットプロトコルを使用して、xid のために行われた処理をコミットする必要がある
例外:
XAException - エラーが発生したことを示す。可能性のある XAException 値は XA_HEURHAZ、XA_HEURCOM、XA_HEURRB、XA_HEURMIX、XAER_RMERR、XAER_RMFAIL、XAER_NOTA、XAER_INVAL、または XAER_PROTO

リソースマネージャがトランザクションをコミットしておらず、パラメータ onePhase が true に設定されている場合、リソースマネージャは XA_RB* 例外の 1 つをスローすることがあります。戻る際に、リソースマネージャは枝の処理をロールバックし、保持していたすべてのリソースを解放しました。


end

public void end(Xid xid,
                int flags)
         throws XAException
トランザクションの枝のために実行された処理を終了します。リソースマネージャは、指定されたトランザクションの枝と XA リソースの関連付けを解除して、トランザクションを完了させます。

TMSUSPEND がフラグに指定されると、トランザクションの枝は不完全な状態で一時的に中断されます。トランザクションコンテキストは中断状態であり、TMRESUME を指定した start メソッドを介して再開する必要があります。

TMFAIL が指定されている場合は、処理部分は失敗しました。リソースマネージャはトランザクションにロールバックのみのマークを付けることがあります。

TMSUCCESS が指定されている場合は、処理部分は正常に完了しました。

パラメータ:
xid - 以前に start メソッドで使用された識別子と同じグローバルトランザクション識別子
flags - TMSUCCESS、TMFAIL、または TMSUSPEND のいずれか
例外:
XAException - エラーが発生したことを示す。可能性のある XAException 値は、XAER_RMERR、XAER_RMFAILED、XAER_NOTA、XAER_INVAL、XAER_PROTO、または XA_RB*

forget

public void forget(Xid xid)
            throws XAException
経験則で完了したトランザクションの枝を無視するようにリソースマネージャに通知します。

パラメータ:
xid - グローバルトランザクション識別子
例外:
XAException - エラーが発生したことを示す。可能性のある XAException 値は、XAER_RMERR、XAER_RMFAIL、XAER_NOTA、XAER_INVAL、または XAER_PROTO

getTransactionTimeout

public int getTransactionTimeout()
                          throws XAException
この XAResource インスタンスに対して設定された現在のトランザクションタイムアウト値を取得します。このメソッドを呼び出す前に XAResource.setTransactionTimeout が使用されていなかった場合、戻り値はリソースマネージャに対して設定されたデフォルトのタイムアウトです。そうでない場合は、以前の setTransactionTimeout 呼び出しで使用された値が返されます。

戻り値:
秒単位のトランザクションタイムアウト値
例外:
XAException - エラーが発生したことを示す。可能性のある例外値は XAER_RMERR および XAER_RMFAIL

isSameRM

public boolean isSameRM(XAResource xares)
                 throws XAException
このメソッドを呼び出して、ターゲットオブジェクトで表されるリソースマネージャインスタンスがパラメータ xares で表されるリソースマネージャインスタンスと同じかどうかを判定できます。

パラメータ:
xares - ターゲットオブジェクトのリソースマネージャインスタンスと比較されるリソースマネージャインスタンスを持つ XAResource オブジェクト
戻り値:
同じ RM インスタンスである場合は true、そうでない場合は false
例外:
XAException - エラーが発生したことを示す。可能性のある例外値は XAER_RMERR および XAER_RMFAIL

prepare

public int prepare(Xid xid)
            throws XAException
xid で指定されたトランザクションのトランザクションコミットの準備をリソースマネージャに問い合わせます。

パラメータ:
xid - グローバルトランザクション識別子
戻り値:
トランザクションの結果に関するリソースマネージャの判定を示す値。可能性のある値は XA_RDONLY または XA_OK。リソースマネージャがトランザクションをロールバックする場合は、準備のためのメソッドで該当する XAException を発生させて行う
例外:
XAException - エラーが発生したことを示す。可能性のある XAException 値は、XA_RB*、XAER_RMERR、XAER_RMFAIL、XAER_NOTA、XAER_INVAL、または XAER_PROTO

recover

public Xid[] recover(int flag)
              throws XAException
リソースマネージャから準備されたトランザクションの枝のリストを取得します。トランザクションマネージャは回復時にこのメソッドを呼び出して、現在準備状態または経験則で完了した状態にあるトランザクションの枝のリストを取得します。

パラメータ:
flag - パラメータにほかのフラグが設定されていない場合は、TMSTARTRSCAN、TMENDRSCAN、TMNOFLAGS、TMNOFLAGS のいずれかを使用する必要がある
戻り値:
リソースマネージャは、現在準備状態または経験則で完了した状態にあるトランザクションの枝のゼロ以上の XID を返す。操作中にエラーが発生すると、リソースマネージャは該当する XAException をスローする
例外:
XAException - エラーが発生したことを示す。可能性のある値は、XAER_RMERR、XAER_RMFAIL、XAER_INVAL、および XAER_PROTO

rollback

public void rollback(Xid xid)
              throws XAException
トランザクションの枝のために実行された処理をロールバックするようリソースマネージャに通知します。

パラメータ:
xid - グローバルトランザクション識別子
例外:
XAException - エラーが発生したことを示す

setTransactionTimeout

public boolean setTransactionTimeout(int seconds)
                              throws XAException

この XAResource インスタンスの現在のトランザクションタイムアウト値を設定します。このタイムアウト値は、一度設定されると、別の値を使用して setTransactionTimeout が再度呼び出されるまで有効です。タイムアウト値をリソースマネージャで使用されるデフォルト値にリセットするには、値をゼロに設定します。タイムアウト操作が正常に実行されると、このメソッドは true を返し、そうでない場合は false を返します。リソースマネージャがトランザクションタイムアウト値の設定を明示的にサポートしない場合、このメソッドは false を返します。

パラメータ:
seconds - 秒単位のトランザクションタイムアウト値
戻り値:
トランザクションタイムアウト値が正常に設定された場合は true、そうでない場合は false
例外:
XAException - エラーが発生したことを示す。可能性のある例外値は XAER_RMERR、XAER_RMFAIL、または XAER_INVAL

start

public void start(Xid xid,
                  int flags)
           throws XAException
xid で指定されたトランザクションの枝のための処理を開始します。 TMJOIN が指定される場合は、リソースマネージャで以前に使用されたトランザクションの参加を開始します。TMRESUME が指定される場合は、パラメータ xid で指定された中断トランザクションを再開します。TMJOIN も TMRESUME も指定されず、xid で指定されたトランザクションが以前にリソースマネージャで使用された場合は、リソースマネージャはエラーコード XAER_DUPID で XAException 例外をスローします。

パラメータ:
xid - リソースに関連付けられるグローバルトランザクション識別子
flags - TMNOFLAGS、TMJOIN、または TMRESUME のいずれか
例外:
XAException - エラーが発生したことを示す。可能性のある例外値は、XA_RB*、XAER_RMERR、XAER_RMFAIL、XAER_DUPID、XAER_OUTSIDE、XAER_NOTA、XAER_INVAL、または XAER_PROTO

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.