ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Service Bus開発者ガイド
11gリリース1 (11.1.1.6.2)
B61435-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

24 Oracle SOA Suiteトランスポート(SOA-DIRECT)

この章では、SOA-DIRECTトランスポートの概要と、サービスでの使用および構成方法について説明します。

Oracle Service Busで提供されるSOA-DIRECTトランスポートを使用すると、Oracle SOA Suiteサービス・コンポーネント(BPELプロセス、ヒューマン・タスク、ルール、およびOracle Mediatorコンポーネントなど)を呼び出すことができます。


注意:

SOA-DIRECTトランスポートはOracle SOA Suite 11g以上のサービス・コンポーネントと通信するためのものです。Oracle Service Busは、Oracle SOA Suite 10g リリース3との通信用にbpel-pmトランスポートを備えています。詳細は、第34章「Oracle BPEL Process Managerトランスポート(Oracle SOA Suite 10gで使用する場合のみ)」を参照してください。


この章の内容は以下のとおりです。

24.1 SOA-DIRECTトランスポートについて

SOA-DIRECTトランスポートにより、Oracle Service BusとOracle SOA Suiteサービス・コンポーネントの間にネイティブの接続が提供されます。Oracle SOA Suiteでは、「ダイレクト・バインディング」フレームワークにより、Oracle SOA Suiteサービス・コンポーネントをコンポジット・アプリケーションで公開できます。Oracle Service Bus SOA-DIRECTトランスポートは、公開されたそれらのサービスとSOAダイレクト・バインディング・フレームワークを介してやりとりします。こうすることで、これらのサービス・コンポーネントがサービス・バス・レイヤーとやりとりし、Oracle Service Busの機能を活用できます。

SOAバインディング・コンポーネントの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』のバインディング・コンポーネントの導入およびダイレクト・バインディング呼出しAPIに関する項を参照してください。


注意:

SOA-Directトランスポートでは、SOAP 1.1、SOAP 1.2またはXMLバインドを使用するWSDLタイプのサービスがサポートされます。SOAダイレクト・バインディング・フレームワークでは、ダイレクト・バインディング・サービスはSOAP 1.1およびSOAP 1.2バインドのWSDLとしてのみ公開されます。ただし、XMLバインドを使用する必要がある場合、インポートされるSOAサービスWSDLをダイレクト・バインディング・サービスのために手動でカスタマイズする必要があります。SOA-DIRECTトランスポートとSOAバインディング・コンポーネントの間のメッセージは常に抽象(バインディングなし)であるため、XMLバインドはメッセージ・ペイロードに影響しません。


SOA-DIRECTトランスポートは次の機能をサポートしています。

24.1.1 WS-Addressing

SOA-DIRECTトランスポートは、同期および非同期通信でメッセージ相関のためにWS-Addressingしか使用しません。ビジネス・サービス構成でコールバック・プロキシを構成すると、このトランスポートにより、SOAPヘッダーに自動的に次のWS-Addressingプロパティが生成されます。

  • ReplyTo - 非同期コールバックでのコールバックのアドレスと接続の詳細を設定します。

  • ReferenceParameters - JNDIおよび接続ファクトリのプロパティなど、ReplyToのコールバック・プロパティを含みます。サポート対象の次のWS-Addressingバージョンに対応しています。

    • http://www.w3.org/2005/08/addressing

    • http://schemas.xmlsoap.org/ws/2004/08/addressing

  • ReferenceProperties - JNDIおよび接続ファクトリのプロパティなど、ReplyToのコールバック・プロパティを含みます。サポート対象のWS-Addressingバージョン、http://schemas.xmlsoap.org/ws/2003/03/addressingに対応しています。

ReplyToおよびReferenceParametersの例は、24.4項「WS-Addressingのリファレンス」を参照してください。

WS-Addressingの他のすべてのプロパティのうち、SOA-DIRECTビジネス・サービスのパススルーで使用できないプロパティまたは適していないプロパティは、Oracle Service Busプロキシ・サービス・メッセージ・フローで追加または変換する必要があります。

WS-Addressing以外の相関メカニズムまたはコールバック・メカニズムを使用する場合は、Oracle Service BusとSOAフレームワーク・サービス・コンポーネントの間のWS-Addressingをサポートするように、プロキシ・サービス・パイプラインでメッセージを変換する必要があります。

SOA-DIRECTトランスポートにおけるWS-Addressingの例は、24.4項「WS-Addressingのリファレンス」および24.5例「XMLの例」を参照してください。

24.1.2 セキュリティ

SOA-DIRECTトランスポートでは一方向SSLがサポートされます。SSLを使用するには、ドメインでSSLを有効にし、エンドポイントURIでセキュアなプロトコル(https、iiops、t3sなど)を使用し、URIでセキュアなポートを参照します。SOA-DIRECT URIの詳細は、24.3.1項「SOA-DIRECTのエンドポイントURI」を参照してください。

SOA-DIRECTトランスポートでは、呼出し元のサブジェクトをサービスを介して渡すか、サービスにバインドされたサービス・アカウントによって、ID伝播を行うことができます。SOA-DIRECTトランスポートは標準化された抽象メッセージのみを扱うため、WS-Securityをサポートしていません。セキュリティ設定の詳細は、24.3.2項「ビジネス・サービスのためのSOA-DIRECTトランスポートの構成」を参照してください。

24.1.3 環境値

SOA-DIRECTトランスポートでは、SOA-DIRECTサービスのために次の環境値が格納されています。

  • 「JNDIサービス・アカウント」(セキュリティ・カテゴリ)

  • 「呼出し元のサブジェクトを渡す」(セキュリティ・カテゴリ)

  • 「呼出しサービス・アカウント」(セキュリティ・カテゴリ)

  • 「ワーク・マネージャ」(環境カテゴリ)

これらの値の詳細は、24.3.2項「ビジネス・サービスのためのSOA-DIRECTトランスポートの構成」を参照してください。

24.1.4 エラーの処理

SOA-DIRECTトランスポートは、接続およびアプリケーションのエラーを認識します。したがって、トランスポートの構成で適切な再試行設定を構成できます。トランスポートは、接続やアプリケーションに関連しないエラーについては一般エラーをスローします。

24.1.4.1 接続エラー

SOA-DIRECTトランスポートでは、次の状況で接続エラーが発生します。

  • ターゲット・サービスが存在していない場合。

  • RMIのルックアップまたは呼出し中にネーミング例外が発生した場合(一般エラーのjavax.naming.NamingSecurityException例外を伴います)。

  • RMIのルックアップまたは呼出し中にリモート例外が発生した場合。

24.1.4.2 アプリケーション・エラー

SOA-DIRECTトランスポートでは、アウトバウンド・ビジネス・サービスがSOAPフォルトを受信すると、アプリケーション・エラーが発生します。

サービスの構成ページで「アプリケーション・エラーの再試行」を選択解除すると、アプリケーション・エラー(再試行を行ってもエラーが継続する可能性がある)の際の再試行を停止できます。

24.1.4.3 一般エラー

SOA-DIRECTトランスポートでは、次の状況で一般エラーが発生します。

  • 接続エラーおよびアプリケーション・エラー以外のすべてのエラーの場合。

  • javax.naming.NamingSecurityException (JNDIルックアップ中にスローされる)の場合。これは、他のネーミング例外と同じく接続エラーとはみなされません。

24.2 Oracle Service BusでのSOA Suiteサービスの使用

ここでは、Oracle Service BusとOracle SOA Suiteコンポジットの間の同期および非同期通信パターンについて説明します。

24.2.1 簡単な使用例 - 同期

ここでは、Oracle Service Busを介してSOAコンポジットとネイティブに通信する、簡単で最も一般的な使用例(同期通信)について説明します。

24.2.1.1 SOAコンポジットの同期呼出し

Oracle Service Bus SOA-DIRECTトランスポートは、ダイレクト・バインディング・サービスとして公開されているSOAコンポジットのすべてのコンポーネントを呼び出すことができます。

図24-1に、Oracle Service Busを介したクライアントとOracle SOAサービス・コンポーネントの間の同期通信パターンを示します。SOA-DIRECTビジネス・サービスとダイレクト・バインディング・サービスが使用されます。

図24-1 クライアントによるSOAバインディング・サービスの同期呼出し

図24-1の説明が続きます
「図24-1 クライアントによるSOAバインディング・サービスの同期呼出し」の説明

24.2.1.1.1 サービスの作成と構成

次のガイドラインに従って、Oracle SOAダイレクト・バインディング・サービスをOracle Service Busを介してクライアントから呼び出します。

  • Oracle Service Busに、呼び出すSOAサービス・コンポーネントに相当するSOA-DIRECTビジネス・サービスを作成します。

    • Oracle Service Busで、対応するOracle SOAダイレクト・バインディング・サービスをWSDLに基づいてWSDLリソースを作成します。

      SOAダイレクト・バインディング・サービスWSDLは、SOAリソース・ブラウザを使用してOracle JDeveloperで探すことができます。手順は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』のOracle SOA SuiteでのSOAコンポジット・アプリケーションの開発に関する項を参照してください。

    • 新しいビジネス・サービスを作成します。

    • 「サービス・タイプ」として「WSDL Webサービス」を選択します。

    • 作成したWSDLリソースを選択し、適切なポートまたはバインドを選択します。


      注意:

      ポートを選択すると、トランスポート・タイプとURIは次の構成ページに自動的に伝播されます。


    • ビジネス・サービスの構成でsoa-directトランスポートを選択します。

    • 24.3.1項「SOA-DIRECTのエンドポイントURI」の説明に従って、エンドポイントURIを設定します。

    • 24.3.2項「ビジネス・サービスのためのSOA-DIRECTトランスポートの構成」に従って、ビジネス・サービスの他の設定を構成します。

  • ビジネス・サービスを呼び出すOracle Service Busでのプロキシ・サービスを作成します。クライアントで使用されるトランスポート・タイプを選択します。プロキシの構成の詳細は、4.3項「プロキシ・サービスの構成」および第3章「トランスポート構成」を参照してください。

ステートフル・サービスを使用してメッセージを正しい会話に関連付ける場合は、24.2.1.3項「メッセージと正しい会話の関連付け」を参照してください。

24.2.1.2 SOAコンポジットからの同期呼出し

SOAコンポジットは、任意のOracle Service Bus SB WSDLベース・プロキシ・サービスを呼び出すことができます。SBプロキシ・サービスを呼び出すには、SOAサービス・コンポーネントはターゲット・タイプが「Oracle Service Bus」のダイレクト・バインディング参照を使用する必要があります。(ターゲット・タイプの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。)

表24-0に、Oracle Service Busを介したOracle SOAサービス・コンポーネントと外部サービスの間の同期通信パターンを示します。

図24-2 SOAバインディング・サービスによる外部サービスの同期呼出し

図24-2の説明が続きます
「図24-2 SOAバインディング・サービスによる外部サービスの同期呼出し」の説明

24.2.1.2.1 サービスの作成と構成

次のガイドラインに従って、ダイレクト・バインディング参照を使用してSOAコンポジットから外部サービスを呼び出します。

  • 呼び出したい外部サービスを表すOracle Service Busでのビジネス・サービスを作成します。このサービスでサポートされるトランスポート・タイプを選択します。ビジネス・サービス構成の詳細は、4.2項「ビジネス・サービスの構成」および第3章「トランスポート構成」を参照してください。

  • Oracle Service Busで、ビジネス・サービスを呼び出すSBプロキシ・サービスを作成します。

    • ビジネス・サービスを呼び出すプロキシで使用されるWSDLリソースを作成します。

    • 新しいプロキシ・サービスを作成します。

    • 「サービス・タイプ」として「WSDL Webサービス」を選択します。

    • プロキシ・サービスのWSDLを選択し、必要なポートまたはバインドを選択します。

    • プロキシ・サービスの構成でsbトランスポートを選択します。

    • プロキシ・サービスの他の設定を構成します。詳細は、4.3項「プロキシ・サービスの構成」および第27章「SBトランスポート」を参照してください。


    注意:

    SBプロキシ・サービス対応のWSDLとポート・タイプを使用して、Oracle Service Busを呼び出すダイレクト・バインディング参照を定義します。このWSDLをOracle SOA Suiteプロジェクトにインポートできます。


ステートフル・サービスを使用している場合は、メッセージを正しい会話に関連付ける必要があります。24.2.1.3項「メッセージと正しい会話の関連付け」を参照してください。

24.2.1.3 メッセージと正しい会話の関連付け

ステートフル・メッセージを使用する場合、Oracle Service BusとOracle SOAの間で同期的に送信されるメッセージは、会話と呼ばれます。メッセージを会話の一部として相互に正しく関連付けるために、Oracle Service Bus SOA-DIRECTトランスポートではWS-Addressingの組込みサポートが提供されます。

WS-Addressingの詳細は、24.4.2項「MessageID/RelatesToヘッダー」を参照してください。会話IDの設定例は、24.5.1項「会話IDの例」を参照してください。

24.2.2 高度な使用例 - 非同期

ここでは、SOAコンポジットとOracle Service Busの間のSOA-DIRECTトランスポートを使用する非同期通信について説明します。


注意:

WS-Addressingを使用する非同期会話が現在サポートされているSOAサービス・コンポーネントは、BPELプロセス、Mediatorおよびヒューマン・タスクのみです。


24.2.2.1 SOAコンポジットの非同期呼出し

Oracle Service Bus SOA-DIRECTトランスポートは、ダイレクト・バインディング・サービスとして公開されている非同期SOAサービス・コンポーネントを呼び出すことができます。

図24-3に、Oracle Service Busを介したクライアントとOracle SOAコンポジットの間の非同期通信パターンを示します。ダイレクト・バインディング・サービス、SOA-DIRECTトランスポートおよびSBトランスポートが使用されます。

図24-3 クライアントによるSOAバインディング・サービスの非同期呼出し

図24-3の説明が続きます
「図24-3 クライアントによるSOAバインディング・サービスの非同期呼出し」の説明

24.2.2.1.1 サービスの作成と構成

次のガイドラインに従って、SOAダイレクト・バインディング・サービスをOracle Service Busを介してクライアントから非同期に呼び出します。

  • インバウンド・クライアント側で、クライアントと対話するOracle Service Busアーティファクト(アウトバウンドSOA-DIRECTビジネス・サービスを呼び出すリクエスト・プロキシ・サービス、およびクライアントへのコールバックを処理するコールバック・ビジネス・サービス)を作成します。クライアントによって使用されるトランスポート・タイプを使用します。

    • リクエスト・プロキシ・サービス

      クライアント・リクエストを受信するプロキシ・サービスを構成します。このプロキシ・サービスはアウトバウンド・リクエストのSOA-DIRECTビジネス・サービスを呼び出します。

      コールバックは別の接続に送信されるため、Oracle Service Busは、クライアントにコールバックするときに元のコールバック場所を記憶しておく必要があります。WS-Addressingを使用すると、コールバック・アドレスがReplyToアドレス・ヘッダーでリクエスト・プロキシ・サービスに送信されます。SOA-DIRECTビジネス・サービスを呼び出す前に、リクエスト・プロキシはこのアドレスをReplyToヘッダー内のreferenceParameterプロパティとして渡すことができます。WS-Addressingの指定に従い、referenceParameterプロパティはコールバックのSOAPヘッダー・ブロックに挿入されます。その後、コールバックのSBプロキシがこのコールバック・アドレスを抽出し、コールバック・ビジネス・サービスURIを設定できます。

      コールバック・アドレスの設定の詳細は、24.4.1項「ReplyToヘッダー」および24.5.2項「Oracle Service Busを介したコンポジット間非同期ネイティブ通信の例」を参照してください。

    • コールバック・ビジネス・サービス

      コールバックを処理するために必要なビジネス・サービスを構成します。このビジネス・サービスはアウトバウンド・コールバックSBプロキシ・サービスによって呼び出されます。

      サービスおよびトランスポートの構成方法は、4.2項「ビジネス・サービスの構成」および第3章「トランスポート構成」を参照してください。

  • Oracle Service Busのアウトバウンド側で、SOAコンポジットと対話するためのアーティファクト(呼び出す非同期サービス・コンポーネントを公開するOracle SOAダイレクト・バインディング・サービスへのリクエストを行うリクエストSOA-DIRECTビジネス・サービス、およびダイレクト・バインディング・サービスからのコールバックを処理し、インバウンド・コールバック・ビジネス・サービスを呼び出すコールバックSBプロキシ・サービス)を作成します。

    • リクエストSOA-DIRECTビジネス・サービス

      • Oracle Service Busで、対応するOracle SOAダイレクト・バインディング・サービスをWSDLに基づいてWSDLリソースを作成します。

        SOAダイレクト・バインディング・サービスWSDLは、SOAリソース・ブラウザを使用してOracle JDeveloperで探すことができます。手順は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』のOracle SOA SuiteでのSOAコンポジット・アプリケーションの開発に関する項を参照してください。

      • 新しいビジネス・サービスを作成します。

      • 「サービス・タイプ」として「WSDL Webサービス」を選択します。作成したWSDLリソースを参照して選択し、ダイレクト・バインディング・サービスのために適切なポートまたはバインドを選択します。

        ポートを選択すると、トランスポート・タイプとURIは次の構成ページに自動的に伝播されます。

      • ビジネス・サービスの構成でsoa-directトランスポートを選択します。

      • 24.3.1項「SOA-DIRECTのエンドポイントURI」の説明に従って、URIを設定します。

      • トランスポートの構成ページで、「ロール」「非同期クライアント」に設定します。

      • オプションとして、「コールバック・プロキシ」オプションを使用して、作成したSBコールバック・プロキシ・サービスを選択します。

        コールバック・プロキシを選択すると、SOA-DIRECTトランスポートによってWS-Addressingヘッダーが自動的に生成され、非同期コールバック・レスポンスの指定コールバック・プロキシへの送信を予定していることがSOAダイレクト・バインディング・サービスに知らされます。

        SOA-DIRECTビジネス・サービスでコールバック・プロキシを選択しない場合のコールバック・アドレスの設定方法については、24.4項「WS-Addressingのリファレンス」および24.5.2項「Oracle Service Busを介したコンポジット間非同期ネイティブ通信の例」を参照してください。

      • ビジネス・サービスの残りの部分を構成します。詳細は、24.3項「トランスポート構成のリファレンス」および4.2項「ビジネス・サービスの構成」を参照してください。

      • リクエスト・プロキシ・サービスからこのビジネス・サービスを呼び出します。

  • コールバックSBプロキシ・サービス

    • 新しいプロキシ・サービスを作成します。

    • 「サービス・タイプ」として「WSDL Webサービス」を選択します。

    • ダイレクト・バインディング・サービスのWSDLに対応するWSDLを参照して選択し、適切なポートまたはバインドを選択します。

    • プロキシ・サービスの構成でsbトランスポートを選択します。

    • プロキシ・サービスの構成を完了します。詳細は、4.3項「プロキシ・サービスの構成」および第27章「SBトランスポート」を参照してください。

24.2.2.2 SOAコンポジットからの非同期呼出し

SOAコンポジットの非同期SOAサービス・コンポーネントは、Oracle Service Busを介して外部サービスを呼び出すことができます。このためには、SOAサービス・コンポーネントはターゲット・タイプが「Oracle Service Bus」のダイレクト・バインディング参照を使用する必要があります。(ターゲット・タイプの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。)

図24-4に、Oracle Service Busを介したOracle SOAサービス・コンポーネントと外部サービスの間の非同期通信パターンを示します。ダイレクト・バインディング参照、SBトランスポートおよびSOA-DIRECTトランスポートが使用されます。

図24-4 SOAバインディング・サービスによる外部サービスの非同期呼出し

図24-4の説明が続きます
「図24-4 SOAバインディング・サービスによる外部サービスの非同期呼出し」の説明

24.2.2.2.1 サービスの作成と構成

次のガイドラインに従って、Oracle Service Busを介して外部サービスをOracle SOAダイレクト・バインディング参照から非同期で呼び出します。

  • Oracle Service Busのインバウンド側で、SOAコンポジットと対話するためのアーティファクト(SOAダイレクト・バインディング参照リクエストを受信するリクエストSBプロキシ・サービス、およびSOAダイレクト・バインディング参照へのコールバックを処理するコールバックSOA-DIRECTビジネス・サービス)を作成します。

    • リクエストSBプロキシ・サービス

      • ダイレクト・バインディング参照との対話に使用されるインタフェースに相当するWSDLリソースを作成します。

      • 新しいプロキシ・サービスを作成します。

      • 「サービス・タイプ」として「WSDL Webサービス」を選択します。

      • 作成したWSDLを参照して選択し、適切なポートまたはバインドを選択します。

      • プロキシ・サービスの構成ページでsbトランスポートを選択します。

      • プロキシ・サービスの構成を完了します。詳細は、4.3項「プロキシ・サービスの構成」および第27章「SBトランスポート」を参照してください。

        コールバックは別の接続に送信されるため、Oracle Service Busは、クライアントにコールバックするときに元のコールバック場所を記憶しておく必要があります。WS-Addressingを使用すると、コールバック・アドレスがReplyToアドレス・ヘッダーでリクエスト・プロキシ・サービスに送信されます。外部サービスを呼び出す前に、リクエスト・プロキシ・サービスはこのアドレスをReplyToヘッダー内のreferenceParameterプロパティとして渡すことができます。WS-Addressingの指定に従い、referenceParameterプロパティはコールバックのSOAPヘッダー・ブロックに挿入されます。その後、コールバック・プロキシ・サービスがこのコールバック・アドレスを抽出し、コールバック・ビジネス・サービスURIを設定できます。

        コールバック・アドレスの設定の詳細は、24.4.1項「ReplyToヘッダー」および24.5.2項「Oracle Service Busを介したコンポジット間非同期ネイティブ通信の例」を参照してください。

    • コールバック・ビジネス・サービス

      • 新しいビジネス・サービスを作成します。

      • 「サービス・タイプ」として「WSDL Webサービス」を選択します。

      • ダイレクト・バインディング参照に対するコールバック・インタフェースに相当するWSDLを参照して選択し、適切なポートまたはバインドを選択します。

      • ビジネス・サービスの構成でsoa-directトランスポートを選択します。

      • 24.3.1項「SOA-DIRECTのエンドポイントURI」の説明に従って、サービスURIを"callback"に設定します。

        一般的に、コールバックURIはURI再書込みを使用して呼出し側プロキシで動的に設定されます。ただし、コールバック・アドレスが常に認識されている場合は、"callback"のかわりに正確なコールバック・アドレスを指定できます。

      • SOA-DIRECTトランスポートの構成ページでロールを「サービス・コールバック」に設定します。

      • 24.3.2項「ビジネス・サービスのためのSOA-DIRECTトランスポートの構成」および4.2項「ビジネス・サービスの構成」に従って、ビジネス・サービスの他の設定を構成します。

  • Oracle Service Busのアウトバウンド側で、外部サービスと対話するためのアーティファクト(外部サービスへのリクエストを作成するリクエスト・ビジネス・サービス、およびこのサービスからのコールバックを処理するコールバック・プロキシ・サービス)を作成します。

    • リクエスト・ビジネス・サービス

      ビジネス・サービスが外部サービスを呼び出すように構成します。このビジネス・サービスはリクエストSBプロキシ・サービスによって呼び出されます。このサービスでサポートされるトランスポート・タイプを選択します。ビジネス・サービス構成の詳細は、4.2項「ビジネス・サービスの構成」および第3章「トランスポート構成」を参照してください。

    • コールバック・プロキシ・サービス

      コールバック・アドレスをビジネス・サービスに渡すようにプロキシ・サービスを構成します。コールバックURIはリクエスト内で指定されます。URI再書込みを使用してコールバックURIを抽出し、SOA-DIRECTビジネス・サービスに転送します。このサービスでサポートされるトランスポート・タイプを選択します。プロキシ・サービスの構成の詳細は、4.3項「プロキシ・サービスの構成」および第3章「トランスポート構成」を参照してください。

      WS-Addressingを使用したコールバック・アドレス設定の詳細は、24.4項「WS-Addressingのリファレンス」を参照してください。

24.3 トランスポート構成のリファレンス

ここでは、SOA-DIRECTトランスポートのエンドポイントURLの形式と構成オプションを説明します。

24.3.1 SOA-DIRECTのエンドポイントURI

SOA-DIRECTトランスポートのURIパターンについて説明します。省略可能な要素は大カッコ[]で囲んでいます。

callback - これは、インバウンド・リクエストを処理するサービス・コールバック・ロールのSOA-DIRECTビジネス・サービスのURIです。実際のURIは、実行時にプロキシ・サービス・パイプラインで動的に指定されます。ただし、コールバック・アドレスが常に認識されている場合は、正確なコールバック・アドレスを指定できます。

他のすべてのSOA-DIRECTビジネス・サービス・ロールの場合:

[protocol://authority]/default/compositeName[!versionNumber[*label]]/serviceName

  • protocol

    以下のいずれかのRMI/JNDIプロトコルを使用します。

    • iiop / iiops -サーバーにとらわれない汎用プロトコルです。

    • t3 / t3s - Oracle WebLogic Serverで使用されます。

    • http / https -トンネリングおよびOracle WebLogic Serverで使用します。

      HTTP(S)プロトコルの場合は、サーバーでHTTPトトンネリングを有効にします。SSLプロトコルの場合は、サーバーでSSLを有効にします。

    SOAサービスがOracle Service Busと同じサーバーに配置されている場合、protocolとauthorityは省略できます。

エンドポイントURIの他の要素の説明は次のとおりです。

  • authority - IPアドレスまたはホスト名と、SOAサービス・コンポーネントをホストするSOAサーバーまたはクラスタのポート。

    SOAサービスがOracle Service Busと同じサーバーに配置されている場合、protocolとauthorityは省略できます。

  • default - このドメイン名の値は常に"default"です。

  • compositeName - バインディング・コンポーネント・サービスが定義されるコンポジット・アプリケーションの名前です。

  • !versionNumber - オプション。コンポジット・アプリケーションのバージョン番号。バージョンを指定しないと、最新バージョンが使用されます。

    • *label - オプション。!versionNumberと一緒に使用します。SOAサービスWSDLで使用されるラベル・ハッシュです。

  • serviceName - SOAバインディング・コンポーネント・サービスの名前です。

ロード・バランシングとフェイルオーバーのために1つのサービスに複数のURIを指定できますが、表24-1に示すように、サービス・コールバック・ロールではサービスに対して1つのURIしか指定できません。このため、サービス・コールバック・ロールのサービスではロード・バランシングおよびフェイルオーバーは使用できません。

24.3.1.1 クラスタのURI

クラスタのエンドポイントURIの形式は次のとおりです。

t3://example_managed1:port1,example_managed2:port2/service_path

このとき、t3://example_managed1:port1,example_managed2:port2はJNDIプロバイダのURLです。

24.3.1.2 URIの例

SOA-DIRECTトランスポートのURIの例を次に示します。

  • t3s://example:7002/default/compositeApp/1.0/myService

    単一ノードにデプロイされたサービスを指します。

  • /default/compositeApp!1.0/myService

    Oracle Service Busと同じサーバーに配置されているサービスを指します。

  • t3://soaserver.example.com:7001/default/VacationRequest!1.0*ec2dd6c5-1667-4885-a634-2364547beb2d/directclient

    バージョンとハッシュ・コードを使用して単一サーバーにデプロイされているサービスを指します。これは、SOAバインディング・コンポーネント・サービスWSDLでのデフォルトの形式です。

  • t3://example_managed1:8001,example_managed2:8002/default/myComposite/myService

    "myService"として識別されるクラスタSOAフレームワーク環境を指します。特定のバージョンが指定されていないため、サービスの最新バージョンが使用されます。

24.3.2 ビジネス・サービスのためのSOA-DIRECTトランスポートの構成

表24-1に、SOA-DIRECTトランスポートのトランスポート固有の構成オプションを示します。

表24-1 SOA-DIRECTトランスポート構成

プロパティ 説明

JNDIサービス・アカウント

オプション。ターゲットSOAサービスのJNDIルックアップのためのセキュリティ資格証明を指定します。サービス・アカウントは静的であることが必要です。「参照」をクリックして、サービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。

ロール

必須。サービスが使用する通信パターンを指定します。次のいずれかのオプションを選択します。

  • 同期クライアント(デフォルト) - このロールでは、非同期コールバックがないため、「コールバック・プロキシ」オプションは無効になります。「WS-Addressingのバージョン」オプションも無効です。

  • 非同期クライアント - このロールでは、非同期コールバックが通常必要なため、「コールバック・プロキシ」を指定できます。また、「WS-Addressingのバージョン」を選択する必要があります。非同期オプションが有効になるのは、WSDLサービスのタイプがSOAPの場合のみです。

  • サービス・コールバック - このロールは、外部サービス呼出しの後で非同期コールバックをSOAサービスに返すためのものです。

ロード・バランシングとフェイルオーバーはサービス・コールバック・ロールのサービスでは使用できません。

コールバック・プロキシ

オプション。「非同期クライアント」ロールのみで有効になります。

このオプションでは、コールバックを受信するプロキシ・サービスを指定できます。コールバック・プロキシを選択したとき、リクエストまたはプロキシ・サービス・パイプラインによってWS-Addressingが提供されない場合、Oracle Service BusはSOAPヘッダーのReplyToプロパティに自動的に値を設定します。SBトランスポート(RMI用)を使用するWSDLプロキシ・サービスを選択する必要があります。また、コールバック・プロキシ・サービスはWS-Addressingを認識する必要があります。

リクエストで送信されるWS-Addressingプロパティ、またはプロキシ・サービス・パイプラインで設定されるWS-Addressingプロパティが、このオプションで設定するコールバック・プロキシのかわりに使用されます。

「コールバック・プロキシ」を指定せず、リクエストにReplyToプロパティが含まれない場合は、プロキシ・サービス・パイプラインによってSOAPヘッダーにReplyToプロパティを提供する必要があります。

フォルト・プロキシ

このオプションは現在サポートされていません。非同期パターンでフォルトを処理するようにコールバック・サービスを構成する必要があります。

WS-Addressingのバージョン

必須。「非同期クライアント」ロールのみで有効になります。

リクエストまたはプロキシ・サービス・パイプラインでWS-Addressingが提供されないときに使用するデフォルトのWS-Addressingバージョンを指定します。リクエストで送信されるWS-Addressingプロパティまたはプロキシ・サービス・パイプラインで設定されるWS-Addressingプロパティは、このオプションで設定するWS-Addressingバージョンのかわりに使用されます。

環境ごとにWS-Addressingバージョンが異なる場合、プロキシ・サービス・パイプラインで必要な変換を実行します。詳細は、24.5.1.4項「変換の例」を参照してください。

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

  • 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する説明

  • 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

呼出し元のサブジェクトを渡す

オプション。このオプションを選択すると、SOAサービスを呼び出すときに、Oracle Service Busがプロキシ・サービスの認証済サブジェクトを渡します。「呼出し元のサブジェクトを渡す」の代替オプションである「呼出しサービス・アカウント」オプションは、このオプションを選択すると無効になります。

注意: クライアントとターゲット・サーバーが別のドメインにある場合、それらの間でドメインの信頼が有効になっていることを確認します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のドメイン間セキュリティ・サポートの重要事項に関する項を参照してください。

呼出しサービス・アカウント

オプション。「呼出し元のサブジェクトを渡す」の代替オプションです。RMI呼出しのサービス・アカウントを選択することで、カスタム・セキュリティ資格証明を指定できます。任意のタイプのサービス・アカウントを指定できます(「パス・スルー」、静的、「マッピング)。

「参照」をクリックして、サービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。


24.4 WS-Addressingのリファレンス

ここでは、SOA-DIRECTトランスポートとOracle SOAコンポジットのネイティブ通信に使用する特定のWS-Addressingプロパティについて説明します。また、24.2.2項「高度な使用例 - 非同期」のガイドラインで取り上げた、非同期通信でコールバック・アドレスを指定する方法についても説明します。

WS-Addressingの例は、24.5項「XMLの例」を参照してください。

24.4.1 ReplyToヘッダー

非同期通信では、リクエストとは別の接続でコールバックが送信されます。サービス開発者は、非同期のやり取りで正しいコールバック・アドレスを提供してコールバックが正しいクライアントに送信されるようにする必要があります。WS-Addressing相関によるSOA-DIRECTトランスポートを使用するとき、コールバック・アドレスはWS-AddressingのReplyToヘッダーに指定されます。

24.4.1.1 SOA-DIRECTビジネス・サービスでのSOAコンポジットの非同期呼出し

SOA-DIRECTビジネス・サービスは、オプションでReplyToヘッダーを生成できます。ビジネス・サービスの構成で、コールバックを処理するために「コールバック・プロキシ」を選択すると、SOA-DIRECTトランスポートは、このコールバック・プロキシに対応する正しいコールバック・アドレスをReplyToヘッダーに設定します。このヘッダーが生成されるのは、着信メッセージにすでにReplyToヘッダーが含まれない場合のみであることに注意してください。

詳細は、24.2.2.1項「SOAコンポジットの非同期呼出し」を参照してください。

24.4.1.2 SOA-DIRECTビジネス・サービスでのSOAコンポジットへの非同期コールバック

Oracle Service Busを介して外部サービスをOracle SOAコンポジットから呼び出すとき、コールバック・アドレスを手動で設定する必要があります。このためには、コールバックSOA-DIRECTビジネス・サービスを呼び出すプロキシ・サービスにReplyToの値としてコールバック・アドレスを設定します。

詳細は、24.2.2.2項「SOAコンポジットからの非同期呼出し」を参照してください。

24.4.2 MessageID / RelatesToヘッダー

WS-AddressingのMessageIDヘッダーとRelatesToヘッダーは、Oracle Service BusとOracle SOAサービス・コンポーネントの会話で会話IDの格納に使用され、関連するメッセージが同じ会話内に維持されるようにします。

ReplyToとは異なり、SOA-DIRECTトランスポートでは、MessageIDヘッダーまたはRelatesToヘッダーの組込みサポートは提供されません。かわりに、SOA-DIRECTビジネス・サービスを呼び出すプロキシ・サービスのパイプラインにこれらのヘッダーの正しい値を設定する必要があります。

次に、同期会話と非同期会話でMessageIDヘッダーとRelatesToヘッダーがいつ使用されるかを説明します。

  • 同期会話: MessageIDヘッダーの値により、最初のリクエストで会話IDが決まります。同じ会話内のその後のリクエストでは、この会話IDをRelatesToヘッダーに提供する必要があります。

  • 非同期コールバック: MessageIDヘッダーの値により、最初のリクエストで会話IDが決まります。その後、コールバックではこの会話IDをRelatesToヘッダーに提供する必要があります。

メッセージが正しい会話に関連付けられるように会話IDを設定する方法の詳細は、 24.2.1.3項「メッセージと正しい会話の関連付け」および24.5.1項「会話IDの例」を参照してください。

24.5 XMLの例

次に、Oracle Service BusとOracle SOAサービス・コンポーネントの間のXMLメッセージの例を示します。

24.5.1 会話IDの例

ここでは、Oracle Service BusとOracle SOAコンポジットの会話内のメッセージに会話IDを設定する様々な例を示します。

図24-5では、クライアントがOracle SOAコンポジットのBPEL Processコンポーネントを同期で呼び出しています。ビジネス・サービス(B1)は、SOA-DIRECTトランスポートを使用してプロセスを呼び出します。プロキシ・サービス(P1)は、必要な会話IDマッピングを処理します。SOAコンポジットはBPEL Processをダイレクト・バインディング・サービスとして公開します。

図24-5 Oracle Service Busを介した同期的なやりとりでの操作

図24-5の説明が続きます
「図24-5 Oracle Service Busを介した同期的なやりとりでの操作」の説明

24.5.1.1 ポートおよびメッセージ定義

この項の例では、WSDLで定義された以下のポートおよびメッセージ定義を使用します。

<wsdl:types>
    <xsd:schema
            targetNamespace="http://www.sample.org/spec/samples/types"
            elementFormDefault="qualified">
        <xsd:complexType name="ValueHolder">
            <xsd:all>
                <xsd:any minOccurs="1"/>
            </xsd:all>
        </xsd:complexType>
    </xsd:schema>
</wsdl:types>
<message name="create"/>
<message name="putRequest">
    <part name="key" type="xsd:string"/>
    <part name="value" type="types:ValueHolder"/>
</message>
<message name="putResponse">
    <part name="value" type="types:ValueHolder"/>
</message>
...
<message name="dispose"/>
<portType name="ServiceMap">
    <operation name="create">
        <input message="tns:create"/>
    </operation>
    <operation name="put">
        <input message="tns:putRequest"/>
        <output message="tns:putResponse"/>
    </operation>
    ...
    <operation name="dispose">
        <input message="tns:dispose"/>
    </operation>
</portType>

24.5.1.2 WS-Addressingでの会話IDの設定

この例は、WS-Addressingを使用して会話内のメッセージに会話IDを設定する方法を示しています。

図24-5に通信パターンが示されています。

作成操作

<soap:Envelope>
    <soap:Header>
        <wsa03:MessageID>uuid:123456789</wsa03:MessageID>
    </soap:Header>
    <soap:Body>
        <create/>
    </soap:Body>
</soap:Envelope>

プット操作

<soap:Envelope>
    <soap:Header>
        <wsa03:MessageID>uuid:111111111</wsa03:MessageID>
        <wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
    </soap:Header>
    <soap:Body>
        <put>
            <key>key</key>
            <value>
                <PO/>
            </value>
        </put>
    </soap:Body>
</soap:Envelope>
<soap:Envelope>
    <soap:Body>
        <putResponse>
            <value/>
        </putResponse>
    </soap:Body>
</soap:Envelope>

<put>操作にもMessageIDがありますが、RelatesToに会話IDを示す値があるので無視されます。

24.5.1.3 メッセージ・ペイロード・データでの会話IDの設定

この例は、メッセージ・ペイロード・データを使用して会話内のメッセージに会話IDを設定する方法を示しています。

これらの例では、プロキシ・サービスがIDをMessageID/RelatesTo SOAPヘッダーにマッピングします。

図24-5に通信パターンが示されています。

作成操作

クライアントからプロキシ・サービス

<soap:Envelope>
    <soap:Body>
        <create/>
    </soap:Body>
</soap:Envelope>
<soap:Envelope>
    <soap:Body>
        <createResponse>
            <mapID>uuid:123456789</mapID>
        </createResponse>
    </soap:Body>
</soap:Envelope>

プロキシ・サービスからSOAコンポジット(SOA-DIRECTビジネス・サービス経由)

<soap:Envelope>
    <soap:Header>
        <wsa03:MessageID>uuid:123456789</wsa03:MessageID>
    </soap:Header>
    <soap:Body>
        <create/>
    </soap:Body>
</soap:Envelope>

説明なし: IDはプロキシ・サービス・パイプラインのリクエストで生成され、プロセスを呼び出す前に<wsa03:MessageID>として挿入されました。プロセス側では、作成操作は一方向の操作なので、クライアントに応答する前にSOAPレスポンスが作成される必要があります。プロキシ・サービスで生成されたIDがレスポンスによって返送されます。

プット操作

クライアントからプロキシ・サービス

<soap:Envelope>
    <soap:Body>
        <put>
            <mapID>uuid:123456789</mapID>
            <key>key</key>
            <value>
                <PO/>
            </value>
        </put>
    </soap:Body>
</soap:Envelope>
<soap:Envelope>
    <soap:Body>
        <putResponse>
            <value/>
        </putResponse>
    </soap:Body>
</soap:Envelope>

プロキシ・サービスからSOAコンポジット(SOA-DIRECTビジネス・サービス経由)

<soap:Envelope>
    <soap:Header>
        <wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
    </soap:Header>
    <soap:Body>
        <put>
            <key>key</key>
            <value>
                <PO/>
            </value>
        </put>
    </soap:Body>
</soap:Envelope>
<soap:Envelope>
    <soap:Body>
        <putResponse>
            <value/>
        </putResponse>
    </soap:Body>
</soap:Envelope>

破棄操作

クライアントからプロキシ・サービス

<soap:Envelope>
    <soap:Body>
        <dispose>
            <mapID>uuid:123456789</mapID>
        </dispose>
    </soap:Body>
</soap:Envelope>

プロキシ・サービスからSOAコンポジット(SOA-DIRECTビジネス・サービス経由)

<soap:Envelope>
    <soap:Header>
        <wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
    </soap:Header>
    <soap:Body>
        <dispose/>
    </soap:Body>
</soap:Envelope>

24.5.1.4 変換の例

これらの例では、クライアントがWS-Addressing仕様の新しいバージョン(wsa04接頭辞)を使用します。プロキシ・サービスで、wsa03接頭辞を使用するようにSOAPヘッダーの変換を行う必要があります。プロキシ・サービス開発者はトランスフォーメーションを構成します。

図24-5に通信パターンが示されています。

作成操作

クライアントからプロキシ・サービス

<soap:Envelope>
    <soap:Header>
        <wsa04:MessageID>uuid:123456789</wsa04:MessageID>
    </soap:Header>
    <soap:Body>
        <create/>
    </soap:Body>
</soap:Envelope>

プロキシ・サービスからSOAコンポジット(SOA-DIRECTビジネス・サービス経由)

<soap:Envelope>
    <soap:Header>
        <wsa03:MessageID>uuid:123456789</wsa03:MessageID>
    </soap:Header>
    <soap:Body>
        <create/>
    </soap:Body>
</soap:Envelope>

プット操作

クライアントからプロキシ・サービス

<soap:Envelope>
    <soap:Header>
        <wsa04:MessageID>uuid:111111111</wsa04:MessageID>
        <wsa04:RelatesTo>uuid:123456789</wsa04:RelatesTo>
    </soap:Header>
    <soap:Body>
        <put>
            <key>key</key>
            <value>
                <PO/>
            </value>
        </put>
    </soap:Body>
</soap:Envelope>
<soap:Envelope>
    <soap:Body>
        <putResponse>
            <value/>
        </putResponse>
    </soap:Body>
</soap:Envelope>

プロキシ・サービスからSOAコンポジット(SOA-DIRECTビジネス・サービス経由)

<soap:Envelope>
    <soap:Header>
        <wsa03:MessageID>uuid:111111111</wsa03:MessageID>
        <wsa03:RelatesTo>uuid:123456789</wsa03:RelatesTo>
    </soap:Header>
    <soap:Body>
        <put>
            <key>key</key>
            <value>
                <PO/>
            </value>
        </put>
    </soap:Body>
</soap:Envelope>
<soap:Envelope>
    <soap:Body>
        <putResponse>
            <value/>
        </putResponse>
    </soap:Body>
</soap:Envelope>

24.5.2 Oracle Service Busを介したコンポジット間非同期ネイティブ通信の例

次の例は、Oracle Service Busを介して別のSOAコンポジットを非同期で呼び出すSOAコンポジットに関連するSOAPヘッダーです。最初のSOAコンポジットは、ダイレクト・バインディング参照として公開されたBPEL Processを使用して、Oracle Service Busを呼び出します。2番目のSOAコンポジットは、ダイレクト・バインディング参照として公開されたBPEL Processを使用して、Oracle Service Busからのリクエストを受信します。

図24-6では、P1とP2はプロキシ・サービスであり、B1およびB2ビジネス・サービスにメッセージを渡します(そして、変換を実行します)。B1およびB2、Oracle Service Bus SOA-DIRECTトランスポートを使用してSOAコンポジットを呼び出すために必要です。

図24-6 Oracle Service Busを介してSOAコンポジットを呼び出すSOAコンポジット

図24-6の説明が続きます
「図24-6 Oracle Service Busを介してSOAコンポジットを呼び出すSOAコンポジット」の説明

次のSOAPヘッダー例については、図24-6を参照してください。

24.5.2.1 ポートとメッセージの定義

<message name="LoanServiceRequestMessage">
    <part name="payload" element="types:loanApplication"/>
</message>
<message name="LoanServiceResultMessage">
    <part name="payload" element="types:loanOffer"/>
</message>
<portType name="LoanService">
    <operation name="initiate">
        <input message="tns:LoanServiceRequestMessage"/>
    </operation>
</portType>
<portType name="LoanServiceCallback">
    <operation name="onResult">
        <input message="tns:LoanServiceResultMessage"/>
    </operation>
</portType>

24.5.2.2 BP1からP1 - 開始操作

<soap:Envelope>
    <soap:Header>
        <wsa03:ReplyTo>
            <wsa03:Address>
                 t3://soaserver:8001/default/AmericanLoanClient/LoanserviceRequester
            </wsa03:Address>
        </wsa03:ReplyTo>
        <MessageID>AmericanLoanClient~1.0/60007</MessageID>
    </soap:Header>
    <soap:Body >
        <loanApplication>
            ...
        </loanApplication>
    </soap:Body>
</soap:Envelope>

24.5.2.3 P1/B1からBP2

<soap:Envelope>
    <soap:Header>
        <wsa03:ReplyTo>
            <wsa03:Address>http://serverB:7001/P2</wsa03:Address>
            <wsa03:referenceParameters>
                <osb:Callback>
                    <osb:Address>
                         t3://soaserver:8001/default/AmericanLoanClient/LoanserviceRequesterRef#LoanserviceRequesterBpel
                    </osb:Address>
                </osb:Callback>
            </wsa03:referenceParameters>
        </wsa03:ReplyTo>
        <MessageID>AmericanLoanClient~1.0/60007</MessageID>
    </soap:Header>
    <soap:Body >
        <loanApplication>
            ...
        </loanApplication>
    </soap:Body>
</soap:Envelope>

ReplyToコールバック・アドレスはB1によって設定されます。24.3.2項「ビジネス・サービスのためのSOA-DIRECTトランスポートの構成」で説明したように、この値はSOA-DIRECTトランスポートの構成の「コールバック・プロキシ」フィールドから取得されます。B1のコールバック・プロキシはP2です。

元のreplyTo情報は、(後に続く) onResultコールバック・メッセージに反映されるように、ラップして参照プロパティとして送信する必要があります。


注意:

このサンプルでは、説明のためにosb:Callbackとosb:Addressを使用しています。WS-Addressingのサポートのために定義された標準またはOracle Service Bus標準の要素はありません。


24.5.2.4 BP2からP2 - onResult操作

<soap:Envelope>
    <soap:Header>
        <wsa03:RelatesTo>AmericanLoanClient~1.0/60007</wsa03:RelatesTo>
        <osb:Callback>
            <osb:Address>
                  t3://soaserver:8001/default/AmericanLoanClient/LoanserviceRequesterRef#LoanserviceRequesterBpel
            </osb:Address>
        </osb:Callback>
    </soap:Header>
    <soap:Body >
        <loanOffer>
            ...
        </loanOffer>
    </soap:Body>
</soap:Envelope>

参照プロパティosb:Callbackは、Oracle BPEL Process ManagerエンジンによってSOAPヘッダーとして返送されます。

24.5.2.5 P2/B2からBP1 - onResult操作

<soap:Envelope>
    <soap:Header>
        <wsa03:RelatesTo>AmericanLoanClient~1.0/60007</wsa03:RelatesTo>
    </soap:Header>
    <soap:Body >
        <loanOffer>
            ...
        </loanOffer>
    </soap:Body>
</soap:Envelope>

この一時的なosb:Callbackヘッダーはプロキシ・サービスP2で削除されますが、このヘッダーを削除する前に、ビジネス・サービスB2のSOA-DIRECTトランスポートがコールバック・メッセージを正しいSOAサービス・コンポーネントに送信できるようにreplyToアドレス値が$outbound変数にコピーされます。