6 Webサービスの原子性トランザクションの使用に関する概要

Webサービス原子性トランザクションの使用して、他の外部トランザクション処理システムとの相互運用を可能にする方法を、この章で詳細に説明します。

内容は次のとおりです。

6.1 Webサービス原子性トランザクション・フレームワークの概要

WebLogic Webサービスでは、特定の仕様をサポートすることで、Websphere、Microsoft .NETといった他の外部トランザクション処理システムとの相互運用性を実現しています。

これらの仕様は、次のとおりです。

これらの仕様は、一連の参加者の間で分散されたアクティビティを調整するための拡張フレームワークを定義するものです。次の図に示されているコーディネータは中心的なコンポーネントで、トランザクションの状態(調整コンテキスト)を管理し、Webサービスおよびクライアントを参加者として登録することを可能にします。

図6-1 Webサービス原子性トランザクション・フレームワーク

図6-1の説明が続きます
「図6-1 Webサービス原子性トランザクション・フレームワーク」の説明

6.2 WebLogic Server環境内のWebサービス原子性トランザクションの概要

WebLogic ServerはWebサービス原子性トランザクションのコンテキスト内で相互処理を行います。

図6-2はそのような相互処理を行っている2つのインスタンスを示しています。わかりやすくするために、2つのWebLogic Webサービス・アプリケーションを示しています。

図6-2 WebLogicサーバー環境内のWebサービス原子性トランザクション

図6-2の説明が続きます
「図6-2 WebLogic Server環境内のWebサービス原子性トランザクション」の説明

以下の点に注意する必要があります。

  • ローカルJTAトランザクション・マネージャを使用すると、すべてWebサービス・リクエストのコンテキスト内で、トランザクションを下位トランザクションとしてローカルなJTA環境との間でインポートおよびエクスポートできます。

  • 調整コンテキストの作成と管理は、ローカルJTAトランザクション・マネージャによって行われます。

  • トランザクションの整合性管理とリカバリ処理はすべて、ローカルJTAトランザクション・マネージャによって行われます。

JTAの詳細は、Oracle Fusion Middleware Oracle WebLogic Server JTAアプリケーションの開発で、Java Transaction APIとOracle WebLogic拡張機能を参照してください。

次に、図6-2に示されているエンドツーエンドのWebサービス原子性トランザクションの相互作用の例について説明します。

  1. アプリケーションAが、サーバーAでJTAトランザクション・マネージャを使用して、コントロールの現行スレッドに対するトランザクションを開始します。

  2. アプリケーションAが、サーバーBのアプリケーションBでWebサービス・メソッドをコールします。

  3. サーバーAがトランザクション情報を更新し、調整コンテキストを含むSOAPヘッダーを作成して、トランザクションおよびローカル・コーディネータを指定します。

  4. サーバーBがアプリケーションBのリクエストを受信して、ヘッダーにトランザクション調整コンテキストが含まれていることを検出し、アプリケーションBがこのトランザクションの参加者としてすでに登録されているかどうかを判断します。すでに登録されていれば、そのトランザクションは再開され、登録されていない場合は、新しいトランザクションが開始されます。

    アプリケーションBがインポート済トランザクションのコンテキスト内で実行されます。アプリケーションの対話に使用されるすべてのトランザクション・リソースは、このインポート済トランザクションに登録されます。

  5. サーバーBは、トランザクション調整コンテキスト内で指定されている登録サービスを使用して、WS-ATトランザクションの参加者として自身を登録します。

  6. サーバーAがトランザクションを再開します。

  7. アプリケーションAが処理を再開し、トランザクションをコミットします。

6.3 Webサービス原子性トランザクションのコンポーネント

Webサービス原子性トランザクションは、コーディネータ、アクティブ化サービス、登録サービスおよびアプリケーション・プロトコルX、Yで構成されています。

表6-1はこれらのコンポーネントの詳細を示しています。

表6-1 Webサービス原子性トランザクションのコンポーネント

コンポーネント 説明

コーディネータ

トランザクションの状態(調整コンテキスト)を管理し、Webサービスおよびクライアントを参加者として登録することを可能にします。

アクティブ化サービス

アプリケーションによるトランザクションのアクティブ化、およびアクティビティの調整コンテキストの作成を可能にします。作成された調整コンテキストは、トランザクション・フローとともに渡されます。

登録サービス

アプリケーションを参加者として登録することを可能にします。

アプリケーション・プロトコルX、Y

サポートされている調整プロトコル(WS-AtomicTransactionなど)。

6.4 WebサービスでWebサービス原子性トランザクションを有効にする方法(インバウンド)

Webサービスで、Webサービス原子性トランザクションを有効化および構成します。設計時にはOracle JDeveloperを使用してWebサービスの作成時に、デプロイ時にはFusion Middleware Controlを使用して行います。

詳細は、次の項を参照してください。

構成オプションの詳細は、「Webサービス原子性トランザクションの構成」を参照してください。

6.5 Webサービス・クライアントでWebサービス原子性トランザクションを有効にする方法(アウトバウンド)

Webサービス・クライアントで、デプロイ時にFusion Middleware Controlを使用して、Webサービス原子性トランザクションを有効化および構成します。

表6-3に定義されているように、バージョンおよびフロー・タイプを構成します。

詳細は、『Webサービスの管理』Fusion Middleware Controlを使用した原子性トランザクションの構成に関する項を参照してください。

Webサービス原子性トランザクションを有効化および構成します。設計時にはOracle JDeveloperを使用してWebサービスを作成するときに行い、デプロイ時にはFusion Middleware Controlを使用して行います。詳細は、次の項を参照してください。

構成オプションの詳細は、「Webサービス原子性トランザクションの構成」を参照してください。

6.6 Webサービス原子性トランザクションの構成

特定の構成を設定して、Webサービスの原子性サービスを有効にできます。

表6-2は、Webサービス原子性トランザクションを有効にする際に設定可能な構成オプションをまとめたものです。

表6-2 Webサービス原子性トランザクションの構成オプション

属性 説明

バージョン

Webサービスのアトミック・トランザクションの調整コンテキストのサポートされているバージョン。Webサービス・クライアントの場合、アウトバウンド・メッセージにのみ使用されるバージョンが指定されます。トランザクション全体で同じ値を指定する必要があります。

有効な値は、WSAT10WSAT11WSAT12、およびDEFAULTです。

WebサービスのDEFAULT値は、インバウンド・リクエストに基づくもので、任意の値になります。

Webサービス・クライアントのDEFAULT値は次のとおりです。

  • フロー・オプションがWSDLDRIVENの場合、WSDLで通知されたバージョンが使用されます。

  • フロー・オプションがWSDLDRIVEN以外の設定の場合は、WSAT10が使用されます。

フロー・タイプ

Webサービスアトミック・トランザクション調整コンテキストがトランザクション・フローとともに渡されるかどうか。有効な値は、表6-3を参照してください。

表6-3は、フロー・タイプの有効な値と、Webサービスおよびクライアントでのそれらの意味をまとめたものです。また、@TransacationAttribute注釈を使用するEJB型のWebサービスに対してWebサービス原子性トランザクションを構成する際の有効な値の組合せも示しています。

表6-3 フロー・トランザクションの調整コンテキスト・タイプの値

Webサービス・クライアント Webサービス EJB @TransactionAttributeの有効な値

NEVER (SOAサービスのデフォルト)

JTAトランザクションがある場合: トランザクションの調整コンテキストをエクスポートしません。

JTAトランザクションがない場合: トランザクションの調整コンテキストをエクスポートしません。

トランザクション・フローが存在する場合: トランザクションの調整コンテキストをインポートしません。CoordinationContextヘッダーにmustunderstand="true"が含まれている場合は、SOAPフォルトがスローされます。

トランザクション・フローがない場合: トランザクションの調整コンテキストをインポートしません。

NEVERNOT_SUPPORTEDREQUIREDREQUIRES_NEWSUPPORTS

SUPPORTS

JTAトランザクションがある場合: トランザクションの調整コンテキストをエクスポートします。

JTAトランザクションがない場合: トランザクションの調整コンテキストをエクスポートしません。

トランザクション・フローが存在する場合: トランザクション・コンテキストをインポートします。

トランザクション・フローがない場合: トランザクションの調整コンテキストをインポートしません。

SUPPORTSREQUIRED

MANDATORY

JTAトランザクションがある場合: トランザクションの調整コンテキストをエクスポートします。

JTAトランザクションがない場合: 例外がスローされます。

トランザクション・フローが存在する場合: トランザクション・コンテキストをインポートします。

トランザクション・フローがない場合: サービス側の例外がスローされます。

MANDATORYREQUIREDSUPPORTS

WSDLDRIVEN(SOA参照のみ。デフォルト。)

WebサービスWSDLで通知された値に基づく動作をします。

該当なし

通知された値によって異なります。

6.7 コーディネータと参加者の間で交換されるメッセージに関するプロパティの構成

WebLogic Server管理コンソールを使用して、コーディネータと参加者の間で交換されるメッセージを保護できます。

コーディネータと参加者の間で交換されるメッセージを保護するには、WebLogic Server管理コンソールを使用して、次の表に定義されているプロパティを構成します。これらのプロパティは、ドメイン・レベルで構成します。

詳細なステップは、Oracle WebLogic Server管理コンソール・オンライン・ヘルプWebサービス原子性トランザクションの構成に関する項を参照してください。

表6-4 Webサービス原子性トランザクションの保護

プロパティ 説明

Webサービス・トランザクションのトランスポート・セキュリティ・モード

コーディネータと参加者の間のメッセージ交換に双方向SSLを使用するかどうかを指定します。このプロパティは、次のいずれかの値に設定できます。

  • SSLは不要: Webサービス・トランザクションのプロトコル・メッセージはすべて、HTTPチャネル経由で交換されます。

  • SSLが必要: Webサービス・トランザクションのプロトコル・メッセージはすべて、HTTPSチャネル経由で交換されます。このフラグは、原子性トランザクションが有効になっているMicrosoft .NET Webサービスを起動する際に有効にする必要があります。

  • クライアント証明書が必要: Webサービス・トランザクションのプロトコル・メッセージはすべてHTTPS経由で交換され、クライアント証明書が必要となります。

詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプの双方向SSLの構成に関する説明を参照してください。

Webサービス・トランザクションの発行済みトークンを有効化

IssuedTokenを使用してWebサービス原子性トランザクションのコーディネータと参加者の間の認証を有効にするかどうかを指定するフラグ。

IssuedTokenは、コーディネータによって発行され、セキュリティ・コンテキスト・トークン(SCT)と署名用のセッション・キーで構成されます。参加者は、共有セッション・キーを使用して署名した署名を登録メッセージに入れて送信します。コーディネータは、セッション・キーを使用して署名を検証することにより、参加者を認証します。