次の各項では、トランザクションが完了する前に、外部アプリケーション・サーバーまたはWebLogic Serverが使用不可能になった場合のトランザクション・リカバリ・プロセスについて説明します。
この項では、WebLogic Serverインスタンスが使用不可能な場合の、外部トランザクション・マネージャによって指示されたトランザクションの処理方法について説明します。
準備前の障害
トランザクションが準備される前に、サード・パーティ・トランザクション・マネージャによって指示されたトランザクションに参加するWebLogic Serverインスタンスが使用不可能になった場合、トランザクションは失われます。
準備後の障害
トランザクションが準備された後に、外部トランザクション・マネージャによって指示されたトランザクションに参加するWebLogic Serverインスタンスが使用不可能になった場合、結果はインダウト・トランザクションになります。
次のいずれかの状態になるまで、外部トランザクション・マネージャは定期的にトランザクションの再試行を続けます。
トランザクションがタイムアウトになり、リソースがリカバリされる。
元のWebLogic Serverインスタンスが使用可能になり、トランザクションが解決される。
WebLogic Server環境でクラスタ全体のリカバリがサポートされている場合、別のクラスタ・メンバー上の適切な介在トランザクション・マネージャ(ITM)に転送されると、トランザクションが解決される。
詳細は、Oracle WebLogic Server JTAアプリケーションの開発のクラスタ全体のリカバリおよびOracle WebLogic Server Java APIリファレンスのInterposedTransactionManager
を参照してください。
外部トランザクション・マネージャが、同じXAResource
を使用してトランザクションを完了する場合、JMSリソース・アダプタXAResource
ラッパーは、再試行されるたびに、ITMスタブをルックアップします。外部トランザクション・マネージャが、異なるXAResource
を使用してトランザクションを完了する場合、ライブ・インスタンス上のITMは、XAコールをターゲット・インスタンスに透過的に転送します。どちらの場合も、障害が発生したITMが再起動または移行のいずれかによってリストアされた後にのみ、トランザクションが完了します。
外部サーバーが再起動されると、リカバリ・プロセスが始まります。クラスタ全体のリカバリが有効な場合、影響を受けたクラスタ化されたWebLogic ServerのITMは、recover
メソッドがコールされた際に発生したすべてのインダウト・トランザクションを返します。各ITMは、それ自身でまたは責任のあるITMに転送することによって、すべてのインダウト・トランザクションに対してXAResource
のcommitおよびrollbackコールを処理します。
詳細は、Oracle WebLogic Server JTAアプリケーションの開発のクラスタ全体のリカバリを参照してください。
注意:
リカバリ・プロセスが成功するには、クラスタ内のすべてのITMをポーリングしてインダウト・トランザクションの完全なリストがコンパイルされるため、クラスタ内の個々のITMすべてが使用可能である必要があります。
外部トランザクション・マネージャは、JMSリソース・アダプタによって提供されるXAResource
ラッパーと対話します。XAResource
ラッパーはXAコールをITMスタブに引き継ぎます。JMSリソース・アダプタは、標準のJMS APIと固有のWebLogic JMS拡張APIをクライアント・インタフェースとして使用します。外部サーバー内で実行されるアプリケーション(EJBやサーブレットなど)は、JMSリソース・アダプタ・ラッパーを通じてJMSリソース・アダプタおよびWebLogic JMSと対話します。JMS操作のWebLogic Serverクライアント・オブジェクトへの引き継ぎの他に、JMSリソース・アダプタ・ラッパーは、適切なJMSコールを捕捉することによって、遅延登録およびトランザクション・ブランチの終了も行います。