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サービスおよびクライアントを参加者として登録することを可能にします。
WebLogic ServerはWebサービス原子性トランザクションのコンテキスト内で相互処理を行います。図6-2はそのような相互処理を行っている2つのインスタンスを示しています。わかりやすくするために、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サービス原子性トランザクションは、コーディネータ、アクティブ化サービス、登録サービスおよびアプリケーション・プロトコルX、Yで構成されています。表6-1はこれらのコンポーネントの詳細を示しています。
表6-1 Webサービス原子性トランザクションのコンポーネント
コンポーネント | 説明 |
---|---|
コーディネータ |
トランザクションの状態(調整コンテキスト)を管理し、Webサービスおよびクライアントを参加者として登録することを可能にします。 |
アクティブ化サービス |
アプリケーションによるトランザクションのアクティブ化、およびアクティビティの調整コンテキストの作成を可能にします。作成された調整コンテキストは、トランザクション・フローとともに渡されます。 |
登録サービス |
アプリケーションを参加者として登録することを可能にします。 |
アプリケーション・プロトコルX、Y |
サポートされている調整プロトコル(WS-AtomicTransactionなど)。 |
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サービス原子性トランザクションの構成」を参照してください。
表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サービス・トランザクションの発行済みトークンを有効化 |
|