この章では、Webサービス原子性トランザクションを使用して、他の外部トランザクション処理システムとの相互運用を可能にする方法について説明します。
この章の内容は次のとおりです。
WebLogic Webサービスは、次の仕様のサポートを通じて、Websphere、Microsoft .NETなどの他の外部トランザクション処理システムとの相互運用を可能にします。
WS-AtomicTransaction (WS-AT)バージョン1.0、1.1および1.2: http://docs.oasis-open.org/ws-tx/wstx-wsat-1.2-spec-cs-01/wstx-wsat-1.2-spec-cs-01.html
WS-Coordinationバージョン1.0、1.1および1.2: http://docs.oasis-open.org/ws-tx/wstx-wscoor-1.2-spec-cs-01/wstx-wscoor-1.2-spec-cs-01.html
これらの仕様は、一連の参加者の間で分散アクティビティを調整するための拡張可能なフレームワークを定義します。次の図に示されているコーディネータは中央のコンポーネントで、トランザクションの状態(調整コンテキスト)を管理し、Webサービスおよびクライアントを参加者として登録することを可能にします。
次の表で、この図に示されているWebサービス原子性トランザクションのコンポーネントについて説明します。
表6-1 Webサービス原子性トランザクションのコンポーネント
コンポーネント | 説明 |
---|---|
コーディネータ |
トランザクションの状態(調整コンテキスト)を管理し、Webサービスおよびクライアントを参加者として登録することを可能にします。 |
アクティブ化サービス |
アプリケーションによるトランザクションのアクティブ化およびアクティビティの調整コンテキストの作成を可能にします。作成された調整コンテキストは、トランザクション・フローとともに渡されます。 |
登録サービス |
アプリケーションを参加者として登録することを可能にします。 |
アプリケーション・プロトコルX、Y |
サポートされている調整プロトコル(WS-AtomicTransactionなど)。 |
次の図は、Webサービス原子性トランザクションのコンテキスト内で相互に作用する2つのWebLogic Serverインスタンスを示しています。わかりやすくするために、2つのWebLogic Webサービス・アプリケーションを示しています。
次のことに注意してください。
ローカルJTAトランザクション・マネージャを使用すると、すべてWebサービス・リクエストのコンテキスト内で、トランザクションを下位トランザクションとしてローカルなJTA環境との間でインポートおよびエクスポートできます。
調整コンテキストの作成と管理は、ローカルJTAトランザクション・マネージャによって行われます。
トランザクションの整合性管理とリカバリ処理はすべて、ローカルJTAトランザクション・マネージャによって行われます。
JTAの詳細は、『Oracle WebLogic Server JTAアプリケーションの開発』を参照してください。
次に、図6-2に示されているエンドツーエンドのWebサービス原子性トランザクションの相互作用の例について説明します。
アプリケーションAは、サーバーAでJTAトランザクション・マネージャを使用して、コントロールの現行スレッドに対するトランザクションを開始します。
アプリケーションAは、サーバーBのアプリケーションBでWebサービス・メソッドをコールします。
サーバーAはトランザクション情報を更新し、調整コンテキストを含むSOAPヘッダーを作成して、トランザクションおよびローカル・コーディネータを指定します。
サーバーBは、アプリケーションBのリクエストを受信して、ヘッダーにトランザクション調整コンテキストが含まれていることを検出し、アプリケーションBがこのトランザクションの参加者としてすでに登録されているかどうかを判断します。すでに登録されていれば、そのトランザクションは再開されます。登録されていない場合は、新しいトランザクションが開始されます。
アプリケーションBは、インポート済トランザクションのコンテキスト内で実行されます。アプリケーションの対話に使用されるすべてのトランザクション・リソースは、このインポート済トランザクションに登録されます。
サーバーBは、トランザクション調整コンテキスト内で指定されている登録サービスを使用して、WS-ATトランザクションの参加者として自身を登録します。
サーバーAはトランザクションを再開します。
アプリケーションAは処理を再開し、トランザクションをコミットします。
Webサービスで、Webサービス原子性トランザクションを有効化および構成します。設計時にはOracle JDeveloperを使用してWebサービスの作成時に、デプロイ時にはFusion Middleware Controlを使用して行います。
詳細は、次の項を参照してください。
設計時: 『Oracle SOA SuiteでのSOAアプリケーションの開発』のWS原子性トランザクションのサポートに関する項。
デプロイ時: 『Webサービスの管理』のFusion Middleware Controlを使用した原子性トランザクションの構成に関する項。
『Webサービスの管理』のWLSTを使用した原子性トランザクションの構成に関する項
構成オプションの詳細は、「Webサービス原子性トランザクションの構成について」を参照してください。
Webサービス・クライアントで、デプロイ時にFusion Middleware Controlを使用して、Webサービス原子性トランザクションを有効化および構成します。表6-3に定義されているように、バージョンおよびフロー・タイプを構成します。
詳細は、『Webサービスの管理』のFusion Middleware Controlを使用した原子性トランザクションの構成に関する項を参照してください。
Webサービス原子性トランザクションを有効化および構成します。設計時にはOracle JDeveloperを使用してWebサービスを作成するときに行い、デプロイ時にはFusion Middleware Controlを使用して行います。詳細は、次の項を参照してください。
設計時: 『Oracle SOA SuiteでのSOAアプリケーションの開発』のWS原子性トランザクションのサポートに関する項。
デプロイ時: 『Webサービスの管理』のFusion Middleware Controlを使用した原子性トランザクションの構成に関する項。
構成オプションの詳細は、「Webサービス原子性トランザクションの構成について」を参照してください。
この項の表では、Webサービス原子性トランザクションの構成時に使用する構成オプションおよび有効なフロー・タイプ値について説明します。
表6-2は、Webサービス原子性トランザクションを有効にする際に設定可能な構成オプションをまとめたものです。
表6-2 Webサービス原子性トランザクションの構成オプション
属性 | 説明 |
---|---|
バージョン |
Webサービスの原子性トランザクションの調整コンテキストのサポートされているバージョン。Webサービス・クライアントの場合、アウトバウンド・メッセージにのみ使用されるバージョンが指定されます。トランザクション全体で同じ値を指定する必要があります。 有効な値は、 Webサービスの Webサービス・クライアントの
|
フロー・タイプ |
Webサービス原子性トランザクション調整コンテキストがトランザクション・フローとともに渡されるかどうかを指定します。有効な値は、表6-3を参照してください。 |
注意: Webサービス原子性トランザクションの有効化の詳細は、次を参照してください。 |
表6-3は、フロー・タイプの有効な値と、Webサービスおよびクライアントでのそれらの意味をまとめたものです。また、@TransacationAttribute
注釈を使用するEJB型のWebサービスに対してWebサービス原子性トランザクションを構成する際の有効な値の組合せも示しています。
表6-3 フロー・トランザクションの調整コンテキスト・タイプの値
値 | Webサービス・クライアント | Webサービス | EJB @TransactionAttribute の有効な値 |
---|---|---|---|
|
JTAトランザクションがある場合: トランザクションの調整コンテキストをエクスポートしません。 JTAトランザクションがない場合: トランザクションの調整コンテキストをエクスポートしません。 |
トランザクション・フローが存在する場合: トランザクションの調整コンテキストをインポートしません。CoordinationContextヘッダーに トランザクション・フローがない場合: トランザクションの調整コンテキストをインポートしません。 |
|
|
JTAトランザクションがある場合: トランザクションの調整コンテキストをエクスポートします。 JTAトランザクションがない場合: トランザクションの調整コンテキストをエクスポートしません。 |
トランザクション・フローが存在する場合: トランザクション・コンテキストをインポートします。 トランザクション・フローがない場合: トランザクションの調整コンテキストをインポートしません。 |
|
|
JTAトランザクションがある場合: トランザクションの調整コンテキストをエクスポートします。 JTAトランザクションがない場合: 例外がスローされます。 |
トランザクション・フローが存在する場合: トランザクション・コンテキストをインポートします。 トランザクション・フローがない場合: サービス側の例外がスローされます。 |
|
|
WebサービスWSDLで通知された値に基づく動作をします。 |
なし |
通知された値によって異なります。 |
コーディネータと参加者の間で交換されるメッセージを保護するには、WebLogic Server管理コンソールを使用して、次の表に定義されているプロパティを構成します。これらのプロパティは、ドメイン・レベルで構成します。
詳細な手順は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのWebサービス原子性トランザクションの構成に関する項を参照してください。
表6-4 Webサービス原子性トランザクションの保護
プロパティ | 説明 |
---|---|
Webサービス・トランザクションのトランスポート・セキュリティ・モード |
コーディネータと参加者の間のメッセージ交換に双方向SSLを使用するかどうかを指定します。このプロパティは、次のいずれかの値に設定できます。
詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプの双方向SSLの構成に関する説明を参照してください。 |
Webサービス・トランザクションの発行済みトークンを有効化 |
|