JavaTM Platform
Standard Ed. 6

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

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

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

TMFAIL

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

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

TMJOIN

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

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

TMNOFLAGS

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

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

TMONEPHASE

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

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

TMRESUME

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

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

TMSTARTRSCAN

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

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

TMSUCCESS

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

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

TMSUSPEND

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

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

XA_RDONLY

static final int XA_RDONLY
トランザクションブランチでは読み取りしか行われておらず、コミットされました。

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

XA_OK

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

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

commit

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

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

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


end

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

void forget(Xid xid)
            throws XAException
ヒューリスティックに決着されたトランザクションブランチを無視するようにリソースマネージャーに通知します。

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

getTransactionTimeout

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

戻り値:
トランザクションタイムアウト値 (秒単位)
例外:
XAException - エラーが発生したことを示す。取りうる例外値は、 XAER_RMERR または XAER_RMFAIL

isSameRM

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

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

prepare

int prepare(Xid xid)
            throws XAException
xid で指定されたトランザクションのトランザクションコミットの準備をするようリソースマネージャーに要求します。

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

recover

Xid[] recover(int flag)
              throws XAException
リソースマネージャーから準備されたトランザクションブランチのリストを取得します。トランザクションマネージャーは回復時にこのメソッドを呼び出して、現在準備状態またはヒューリスティックに決着された状態にあるトランザクションブランチのリストを取得します。

パラメータ:
flag - TMSTARTRSCAN、TMENDRSCAN、TMNOFLAGS のいずれか。TMNOFLAGS は、 パラメータにほかのフラグが設定されていない場合に使用する必要がある
戻り値:
リソースマネージャーは、 現在準備状態またはヒューリスティックに決着された状態にある トランザクションブランチのゼロ以上の XID を返す。操作中にエラーが発生すると、 リソースマネージャーは該当する XAException を スローする
例外:
XAException - エラーが発生したことを示す。取りうる値は、XAER_RMERR、XAER_RMFAIL、XAER_INVAL、または XAER_PROTO

rollback

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

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

setTransactionTimeout

boolean setTransactionTimeout(int seconds)
                              throws XAException

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

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

start

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 Platform
Standard Ed. 6

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

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。