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 で指定されたトランザクションブランチのための処理を開始します。 |
static final int TMENDRSCAN
static final int TMFAIL
static final int TMJOIN
static final int TMNOFLAGS
static final int TMONEPHASE
static final int TMRESUME
static final int TMSTARTRSCAN
static final int TMSUCCESS
static final int TMSUSPEND
static final int XA_RDONLY
static final int XA_OK
void commit(Xid xid, boolean onePhase) throws XAException
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 つをスローすることがある。この場合、戻る際に、リソースマネージャーはトランザクションブランチの処理をロールバックし、保持していたすべてのリソースを解放している。
void end(Xid xid, int flags) throws XAException
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*。void forget(Xid xid) throws XAException
xid
- グローバルトランザクション識別子。XAException
- エラーが発生したことを示す。取りうる例外値は、XAER_RMERR、XAER_RMFAIL、XAER_NOTA、XAER_INVAL、または XAER_PROTO。int getTransactionTimeout() throws XAException
XAResource.setTransactionTimeout
が使用されていなかった場合、戻り値はリソースマネージャーに対して設定されたデフォルトのタイムアウトです。そうでない場合は、以前の setTransactionTimeout
呼び出しで使用された値が返されます。XAException
- エラーが発生したことを示す。取りうる例外値は、XAER_RMERR または XAER_RMFAIL。boolean isSameRM(XAResource xares) throws XAException
xares
- ターゲットオブジェクトのリソースマネージャーインスタンスと比較されるリソースマネージャーインスタンスを持つ XAResource オブジェクト。XAException
- エラーが発生したことを示す。取りうる例外値は、XAER_RMERR または XAER_RMFAIL。int prepare(Xid xid) throws XAException
xid
- グローバルトランザクション識別子。XAException
- エラーが発生したことを示す。取りうる例外値は、XA_RB*、XAER_RMERR、XAER_RMFAIL、XAER_NOTA、XAER_INVAL、または XAER_PROTO。Xid[] recover(int flag) throws XAException
flag
- TMSTARTRSCAN、TMENDRSCAN、TMNOFLAGS のいずれか。TMNOFLAGS は、パラメータにほかのフラグが設定されていない場合に使用する必要がある。XAException
- エラーが発生したことを示す。取りうる値は、XAER_RMERR、XAER_RMFAIL、XAER_INVAL、または XAER_PROTO。void rollback(Xid xid) throws XAException
xid
- グローバルトランザクション識別子。XAException
- エラーが発生したことを示す。boolean setTransactionTimeout(int seconds) throws XAException
この XAResource
インスタンスの現在のトランザクションタイムアウト値を設定します。このタイムアウト値は、一度設定されると、別の値を使用して setTransactionTimeout
が再度呼び出されるまで有効です。タイムアウト値をリソースマネージャーで使用されるデフォルト値にリセットするには、値をゼロに設定します。
タイムアウト操作が正常に実行されると、このメソッドは true を返し、そうでない場合は false を返します。リソースマネージャーがトランザクションタイムアウト値の明示的な設定をサポートしていない場合、このメソッドは false を返します。
seconds
- 秒単位のトランザクションタイムアウト値。XAException
- エラーが発生したことを示す。取りうる例外値は、XAER_RMERR、XAER_RMFAIL、または XAER_INVAL。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。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.