Web Services アトミック・トランザクションの概要

アプリケーション・サーバーでの Web Services アトミック・トランザクション (WS-AT) サポートは、 Web サービス環境にトランザクションのサービスの品質を提供します。分散 Web サービス・アプリケーションおよび各アプリケーションが使用するリソースは、分散グローバル・トランザクションに参加できます。現在、WS-AT は Liberty でもサポートされています。

Web サービス・プロトコルでは、Web サービス・アプリケーションを定義する標準的な方法を提供します。アプリケーションはこれを使用して、使用する製品、プラットフォーム、またはプログラム言語から独立して動作することができます。 WS-AT サポートは、アプリケーション・サーバーでの次の仕様の実装です。これらの仕様は、Web サービス・アプリケーションを使用可能にして、異機種の Web サービス環境を介して分散されるグローバル・トランザクションに参加する Web サービスのセットを定義します。

WS-AT サポートは、トランザクションのサポートのための新規プログラミング・インターフェースを導入しないインターオペラビリティー・プロトコルのためのサポートです。グローバル・トランザクション区分は、Java™ Transaction API (JTA) UserTransaction インターフェースの標準エンタープライズ・アプリケーションの使用によって提供されます。グローバル・トランザクションで実行されているアプリケーション・コンポーネントが Web サービス要求を行うと、WS-AT CoordinationContext がターゲット Web サービスに暗黙的に伝搬されます。ただしこれは、適切なアプリケーション・デプロイメント記述子が、トランザクション・デプロイメント属性の構成に関するトピックの説明に従って設定されている場合に限ります。

アプリケーション・サーバーが、WS-AT Coordination Context を含む Web サービス要求のためのターゲット・エンドポイントをホスティングするシステムの場合、アプリケーション・サーバーは、ターゲット Web サービス・アプリケーションを実行するトランザクション・コンテキストとなるターゲット・ランタイム環境で、自動的に従属 JTA トランザクションを確立します。

次の図は、WS-AT CoordinationContext を含む Web サービス要求のための 2 つのアプリケーション・サーバー間で共有されるトランザクション・コンテキストを示しています。

図 1. 2 つのアプリケーション・サーバー間で共有されるトランザクション・コンテキスト
アトミック・トランザクションに、アプリケーション・サーバー 1 上の Web サービス・クライアントとその XA リソース、およびアプリケーション・サーバー 2 上の Web サービス・アプリケーションとその XA リソースが含まれています。

デフォルトでは、WS-AT フィーチャーを有効にして Liberty のクライアント・サイドでトランザクションを開始した場合、 クライアント・トランザクションに含まれる Web サービス操作はすべて、グローバル・トランザクションに追加されます。 一方、現行グローバル・トランザクションの有効範囲外でコードを実行する場合であれば、 タイプ UOWSynchronizationRegistry.UOW_TYPE_LOCAL_TRANSACTIONUOWManager を使用します。 これは、そのコード・スニペットを含むグローバル・トランザクションの中断および再開に影響します。

表 1. Liberty のクライアント・アウトバウンドでの WS-AT グローバル・トランザクション使用可否に関する条件
WS-AT フィーチャーが有効か トランザクションが存在するか WSDL にポリシー・アサーションが存在するか WS-AT グローバル・トランザクションが有効か
いいえ いいえ いいえ いいえ
いいえ いいえ はい いいえ。Liberty が例外をスロー
いいえ はい いいえ いいえ
いいえ はい はい いいえ。Liberty が例外をスロー
はい いいえ いいえ いいえ
はい いいえ はい (wsp: Optional="false") いいえ。Liberty が例外をスロー
はい (wsp: Optional="true") いいえ
はい はい いいえ はい
はい はい はい はい
表 2. Liberty のサーバー・インバウンドでの WS-AT グローバル・トランザクション使用可否に関する条件
WS-AT フィーチャーが有効か SOAP ヘッダーに調整コンテキストが存在するか WSDL にポリシー・アサーションが存在するか WS-AT グローバル・トランザクションが有効か
いいえ いいえ いいえ いいえ
いいえ いいえ はい いいえ
いいえ はい いいえ いいえ。Liberty が例外をスロー
いいえ はい はい いいえ。Liberty が例外をスロー
はい いいえ いいえ いいえ
はい いいえ はい (wsp: Optional="false") いいえ。Liberty が例外をスロー
はい (wsp: Optional="true") いいえ
はい はい いいえ はい
はい はい はい はい

アプリケーション設計

WS-AT は 2 フェーズ・コミット・トランザクション・プロトコルで、短期間トランザクションにのみ適しています。

WS-AT は単一エンタープライズ内にデプロイされた Web サービスにわたりトランザクション・コンテキストを配布するために最適です。トランザクションのオリジネーター (アプリケーションまたはコンテナー) は、トランザクションの完了を要求する前にそのトランザクションで実行されているすべてのビジネス・タスクが完了したことを確認する必要があるため、要求/応答メッセージ交換パターンのみがトランザクション・コンテキストを伝送します。片方向要求によって呼び出された Web サービスは、要求クライアントのトランザクションで実行されません。

WS-AT トランザクションでのサービス障害がもたらす影響は、EJB 仕様に記載されているように、トランザクションでの Enterprise JavaBeans (EJB) アプリケーション例外がもたらす影響に似ています。 要求側の WS-AT トランザクションで実行されているサービスが障害を戻した場合、アプリケーション・サーバーが、そのトランザクションにロールバック専用のマークを自動的に付けることはありません。 要求側の例外ハンドラーが、トランザクションを進行させるかどうかを選択し、そのトランザクションにロールバック専用のマークを付けるかどうかを選択します。要求元がアプリケーション・サーバーで実行されている場合は、JTA または EJB の標準 API を使用して、トランザクションにロールバック専用のマークを付けることができます。 障害を生成したサービス・コンポーネントが、障害を返す前に、自身でトランザクションにロールバック専用のマークを付ける場合もあります。 サービス・コンポーネントの実装でシステム例外が発生した場合、通常はそのコンテナーでの例外処理が許可されます。 サービス実装で生成されたシステム例外の処理時に、アプリケーション・サーバーのコンテナーは、受け取ったトランザクション・コンテキストすべてに、ロールバック専用のマークを自動的に付けます。


トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwlp_dep_wsatoverview_lib
ファイル名: cwlp_dep_wsatoverview_lib.html