WebSphere Application Server での Web Services Atomic Transaction サポートは、 Web サービス環境にトランザクションのサービスの品質を提供します。 これによって、分散 Web サービス・アプリケーションと、それらが使用するリソースを使用可能にし、分散グローバル・トランザクションに参加します。
WS-AT はアトミック・トランザクションのプロトコルを定義する特定の調整タイプです。
WS-COOR は、 CoordinationContext および Registration サービスを指定し、これによっ て、Participant Web サービスは特定の調整タイプによって提供されるプロ トコルに参加することができます。
WS-AT サポートは、トランザクションのサポートのための新規プログラミング・インターフェースを導入しないインターオペラビリティー・プロトコルです。グローバル・トランザクション区分は、 JTA UserTransaction インターフェースの標準 J2EE の使用によって提供されます。 Web サービス要求がグローバル・トランザクションの下で実行されたアプリケーション・コンポーネントによって作成された場合、WS-AT CoordinationContext はターゲット Web サービスに暗黙的に伝搬されます。ただしこれは、適切なアプリケーション・デプロイメント記述子がトランザクション・デプロイメント属性の構成 に説明されるように設定されている場合に限られます。
WebSphere Application Server が、WS-AT CoordinationContext を含む Web サービス要求のための ターゲット・エンドポイントをホスティングするシステムの場合、WebSphere は、ターゲット Web サービス・アプリケーションが実行する トランザクション・コンテキストとなるターゲット・ランタイム環境で自動的に従属 JTA トランザクションを確立します。
次の図2 つの WebSphere アプリケーション・サーバー間で共用されるトランザクション・コンテキストは、WS-AT CoordinationContext を含む Web サービス要求のための 2 つの WebSphere アプリケーション・サーバー間で共用されるトランザクション・コンテキストを示しています。
WebSphere Application Server のこのバージョンでは、 WS-AT コンテキストはファイアウォールを介して伝搬することはできず、 リカバリー不能なクライアント・プロセスから開始することもできません。
サーバー・クラスターに送信される、 同じ WS-AT トランザクションに対する作業要求が、毎回、 同じクラスター・メンバーに割り当てられるとは限りません。その場合は、 トランザクションに対する作業は複数のクラスター・メンバーによって処理されます。 複数のクラスター・メンバーのトランザクション作業が同じトランザクション・リソースに集中すると、 デッドロック状態が発生する場合があります。
WS-AT は 2 フェーズ・コミット・トランザクション・プロトコルで、短期間トランザクションにのみ適しています。
アトミック・トランザクションの目的は、トランザクションのロックをリソースに保持してトランザクションの更新を分離するリソース・マネージャーを調整することであるため、WS-AT トランザクションをエンタープライズ・ドメイン間で分散することはことは、通常お勧めしません。エンタープライズ間トランザクションは、通常 2 フェーズ・コミットより厳密でないセマンティックが必要で、そのようなシナリオでは、例えば BPEL プロセスの一部として補正中のビジネス・トランザクションを使用する方が適切である場合があります。
WS-AT は単一エンタープライズ内にデプロイされた Web サービスにわたりトランザクション・コンテキストを配布するために最適です。トランザクションのオリジネーター (アプリケーションまたはコンテナー) は、トランザクションの完了を要求する前にそのトランザクションで実行されたすべてのビジネス・タスクが完了したことを確認する必要があるため、要求/応答メッセージ交換パターンのみがトランザクション・コンテキストを持ちます。片方向要求によって呼び出された Web サービスは、要求クライアントのトランザクションで実行されません。
WS-AT を活用するために Web サービス・アプリケーションに特別に必要な開発作業はありません。適切に 設定する必要があるアプリケーション・デプロイメント記述子もいくつかあります (設定方法は、トランザクション・デプロイメント属性の構成 に説明されています)。
アプリケーション開発者は、明示的に WS-AT 参加プログラムを登録する必要はありません。 WebSphere Application Server ランタイムは、WS-AT トランザクションが統合される JTA トランザクションの XAResources の登録と同じように、WS-AT 参加プログラムの登録に責任があります。 トランザクション完了時に、すべての XAResources および WS-AT 参加プログラムは、WebSphere Application Server トランザクション・サービスによってアトミックに調整されます。
JTA トランザクションがスレッドでアクティブな場合、Web サービス・アプリケーション要求が行われると、トランザクションは Web サービス要求を介して伝搬され、ターゲット環境で確立されます。 これは、EJB 仕様に記載の IIOP 経由のトランザクション・コンテキストの分散と似ています。 ターゲット環境で実行されるトランザクション作業はすべて、同じグロー バル・トランザクションの一部となります。
通常、WS-AT および WS-COOR プロトコルの制御に使用される SOAP メッセージは、 デフォルトの Web コンテナー・トランスポート・チェーンを使用して伝達されます。 管理セキュリティーが使用可能である場合は、 デフォルトのセキュア・チェーン (通常は WCInboundDefaultSecure) が使用されます。 それ以外の場合は、 デフォルトの非セキュア・チェーン (通常は WCInboundDefault) が使用されます。
WebSphere Application Server 以外のサーバーと相互運用している場合は、 例えば、使用するポートまたは SSL レパートリーを制御するために、 これらのプロトコル・メッセージの代替チェーンを構成する必要があります。 例えば、相互運用しているシステムで、 そのプロトコル・メッセージがクライアント証明認証で HTTP over SSL を使用する必要がある場合は、 インバウンド・プロトコル・メッセージに対して、 該当する SSL レパートリーを使用してチェーンを構成し、 アウトバウンド Web サービス要求に対して、 同じ SSL レパートリーを使用するように WebSphere Application Server を 構成してください。