トランザクションは、すべて正常に完了することが必要なアプリケーションで、周到に用意された一連のアクションです。正常に完了しない場合、各アクションで行われたすべての変更が取り消されます。たとえば、当座預金から普通預金に資金を移動するのは次の手順を実行するトランザクションになります。
当座預金口座にその移動をカバーするだけの金額があるかどうかを確認します。
当座預金に十分なお金が入っている場合は、当座預金の金額を借り方に記帳します。
その金額を普通預金口座の貸し方に記帳します。
その移動を当座預金口座ログに記録します。
その移動を普通預金口座ログに記録します。
これらの手順のいずれが失敗すると、先行する手順によって行われた変更がすべて取り消されます。当座預金口座と普通預金口座はこのトランザクションが始まる前と同じ状態になる必要があります。このイベントは「ロールバック」と呼ばれます。すべての手順が正常に完了すると、トランザクションは「コミット」状態になります。 トランザクションはコミットかロールバックのどちらかで終了します。
関連項目
トランザクション処理には、次の 5 つの処理が含まれます。
これらの各エンティティーは、次に説明する API や機能を実装することにより、信頼性のあるトランザクション処理を実現しています。
トランザクションマネージャーは、トランザクション境界、トランザクションリソース管理、同期化、およびトランザクションコンテキスト伝達のサポートに必要なサービスと管理機能を提供します。
Communications Server は、トランザクション状態管理を含むアプリケーションランタイム環境のサポートに必要なインフラストラクチャーを提供します。
リソースマネージャーは、リソースアダプタを介して、リソースへのアプリケーションアクセスを提供します。リソースマネージャーは、特定のトランザクションリソースインタフェースを実装することで分散トランザクションに参加します。このインタフェースは、トランザクションマネージャーがトランザクションの関連付け、トランザクションの完了、および回復作業を伝達する際に使用されます。このようなリソースマネージャーの例としては、リレーショナルデータベースサーバーがあります。
リソースアダプタはシステムレベルのソフトウェアライブラリで、リソースマネージャーへ接続するためにアプリケーションサーバーまたはクライアントが使用します。通常、リソースアダプタはリソースマネージャーに固有です。リソースアダプタはライブラリとして使用可能で、クライアントのアドレス空間内で使用されます。そのようなリソースアダプタの一例として、JDBC ドライバが挙げられます。
アプリケーションサーバー環境で動作するように開発されたトランザクションユーザーアプリケーションは、JNDI を使用してトランザクションデータソースおよびトランザクションマネージャー (オプション) を検索します。アプリケーションは、エンタープライズ Bean 用の宣言的なトランザクション属性設定や、プログラムによる明示的なトランザクション境界を使用することがあります。
関連項目
Communications Server には、次の JDBC ドライバの回復実装に関するいくつかの既知の問題に対する回避方法が用意されています。明示的に無効にしないかぎり、それらの回避方法が使用されます。
Oracle thin ドライバ - XAResource.recover メソッドは、入力フラグに関係なく、繰り返し同じ未確定 Xid セットを返します。XA 仕様に従って、トランザクションマネージャーは最初に TMSTARTSCAN でこのメソッドを呼び出したあと、TMNOFLAGS で、Xid が返されなくなるまで繰り返しこのメソッドを呼び出します。XAResource.commit メソッドにもいくつかの問題があります。
Communications Server の回避方法を無効にするには、oracle-xa-recovery-workaround プロパティー値を false に設定します。プロパティーの設定方法については、「Communications Server のトランザクションからの回復方法を設定する」を参照してください。
これらの回避方法は、特定の JDBC ドライバに対応するものではありません。