ヘッダーをスキップ
Oracle Web Services Manager管理者ガイド
10g(10.1.3.1.0)
B31906-02
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

4 Oracle Web Services Manager Gatewayでのコンテンツ・ルーティング

この章では、メッセージのコンテンツに基づいて、ゲートウェイにメッセージをルーティングする方法について説明します。この章では次の項について説明します。

Oracle Web Services Manager(Oracle WSM) Gatewayのコンテンツ・ルーティング・ルールを使用すると、実際のメッセージのコンテンツに基づいて、各メッセージを異なるWebサービス・プロバイダに送信するようにメッセージ・ルーティングをカスタマイズできます。Oracle WSM Gatewayのディスパッチ論理では、受信SOAPメッセージの宛先URLに基づいて、異なるパイプライン(つまり、異なるサービス・エンドポイント)に受信メッセージをルーティングします。受信メッセージがSOAPメッセージではない場合でも、メッセージはSOAPに正規化(ラップ)されるため、このディスパッチ論理が同様に適用されます。

クライアントが認識する必要があるのは、ゲートウェイへのメッセージの送信に使用するクライアント・アクセスURLのみです。ゲートウェイは、メッセージをWebサービスURLにルーティングします。クライアントはWebサービスのURLを把握する必要はありません。多くの場合、このURLはクライアントからはわからないようにするのが賢明です。これは次の理由によります。

コンテンツ・ルーティングを使用すると、クライアントは、特定の転送サービス・アドレスを指定せずにメッセージをゲートウェイに送信します。ルーティングは、SOAPエンベロープ(ヘッダーまたはボディ)やSOAP添付ファイルのXMLコンテンツ、および指定したコンテンツ・ルーティング・ルールに基づきます。コンテンツ・ルーティングは、すべてのトランスポート・プロトコルで受信するSOAPメッセージに適用できます。また、ゲートウェイに登録されているサービスにルーティングできます。

/fsを含むURL接頭辞(http://host:port/gateway/fs/crouterなど)付きでメッセージがゲートウェイに届くと、ゲートウェイは、次の事項に基づいて、特定のWebサービスにメッセージを転送します。

このサービスは、HTTP(S)、JMSおよびMQなどの使用可能なトランスポートで、次の方法を使用して起動できます。

ゲートウェイのコンテンツ・ルーティング・ルールの概要

管理者は、コンテンツベースのルールを構成して、ゲートウェイに送信するメッセージの宛先を指定します。ゲートウェイは、これらのルールに基づいてメッセージを評価します。

次に、実際の簡単な適用例を示します。

ある大手保険会社には、保険契約の受信見積依頼書(RFQ)を処理する2つのWebサービスがあります。

この保険会社は、これら2つのサービスのURLを、クライアント・アプリケーションに直接公開しないことにしました。かわりに、クライアントには1つのURLのみを公開し、RFQのclientTypeフィールドに基づいて、メッセージがゲートウェイでWebサービス1またはWebサービス2にルーティングされるようにすることを決定しました。

システム管理者はゲートウェイ用に次のルールを作成します。

メッセージがゲートウェイに届くと、ゲートウェイは各ルールを順番に評価し、一致する最初のルールに従って、メッセージをルーティングします。

コンテンツ・ルーティング・ルールは、単純な条件一致によるXPath1式の作成に基づきます。ルールは、trueまたはfalse値を返す条件、およびアクションによって構成されます。さらに複雑な条件のルールを作成するには、単純な条件を複数作成し、ブール式のANDで結合して使用してください。

表4-1 ルール作成の要素

要素 説明

ルール

ルールは条件とアクションで構成されます。条件は1つ以上の単純な条件のセットです。評価されると、trueまたはfalse値を返します。アクションは、関連する条件がtrueの場合に実行される1つのルーティング操作を示します。

条件

条件は、ブール式のANDで結合された1つ以上の単純な条件から構成され、trueまたはfalse値を返します。単純な条件は次の演算子を使用して定義できます。EQUALS: XML要素の値はX(文字列の一致のみ)と同じです。NOT_EQUALS: XML要素の文字列値は一致しません。XEXISTS: XML要素はSOAPヘッダーやボディ、または添付ファイルに存在します。NOT_EXISTS: XML要素はSOAPヘッダーやボディ、または添付ファイルに存在しません。

アクション

関連する条件がtrueの場合、アクションは指定したWebサービスにメッセージをルーティングまたは転送します。


Web Services Manager Controlを使用して、次の操作を実行できます。

コンテンツ・ルーティング・ルールでは、次の構文を使用します。

条件: IF <variable> <EQUALS/EXISTS> <value>

ネームスペース: WHERE <prefix> = <namespace_url>

アクション: THEN Route To <serviceId>

ネームスペース

アプリケーション・ネームスペースはアプリケーションごとに異なり、全体としてアプリケーションの設計ガイドラインに依存します。

  • SOAP-ENVは、http://schemas.xmlsoap.org/soap/envelope/を指し示すネームスペースです。

サンプルSOAPメッセージ

次のコード・サンプルは、典型的なSOAPメッセージを示しています。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <r:RFQ xmlns:r="http://businessdocs.com/RFQ">
         <clientType>HOMEOWNER</clientType>
         <clientID>12345</clientID>
      </r:RFQ>
   </soap:Body>
</soap:Envelope>

サンプル・コンテンツ・ルーティング・ルール

次に示すのは、前述のサンプルSOAPメッセージ用に定義できる、2つのコンテンツ・ルーティング・ルールのサンプルです。

  1. /soap:Envelope/soap:Body/r:RFQ/clientTypeHOMEOWNERと等しく、SOAPネームスペースがhttp://schemas.xmlsoap.org/soap/envelope/rネームスペースがhttp://businessdocs.com/RFQである場合、Service1にルーティングします。

  2. /soap:Envelope/soap:Body/r:RFQ/clientTypeAUTOOWNERと等しく、SOAPネームスペースがhttp://schemas.xmlsoap.org/soap/envelope/rネームスペースがhttp://businessdocs.com/RFQである場合、Service2にルーティングします。

コンテンツ・ルーティングを使用したWebサービスへのアクセス

この項では、コンテンツ・ルーティングを使用してWebサービスにアクセスする方法について説明します。

コンテンツ・ルーティングを使用してWebサービスにアクセスするには

  1. Web Services Manager Controlのナビゲーション・ペインから、「ツール」を選択して、「テスト・ページ」をクリックします。

  2. ゲートウェイに登録されているWebサービスのURLを入力して、「問合せの発行」をクリックします。

    「Webサービスのテスト」ページが更新され、設定可能なエンドポイントURLとその他のパラメータが表示されます。

  3. エンドポイントURLを次のURLで置き換えます。

    http://host_name:port/gateway/fs/crouter

  4. 「起動」をクリックします。

Oracle WSMコンテンツ・ルーティングのルールの作成

次の手順では、サンプルSOAPメッセージのコンテンツ・ルーティング・ルールを作成します。

/soap:Envelope/soap:Body/r:RFQ/clientTypeHOMEOWNERと等しく、SOAPネームスペースがhttp://schemas.xmlsoap.org/soap/envelope/rネームスペースがhttp://businessdocs.com/RFQである場合、Service1にルーティングします。

Oracle WSMコンテンツ・ルーティングのルールを作成するには

  1. コンテンツ・ルーティング・ルールを定義するゲートウェイのコンポーネント管理者としてログインし、Web Services Manager Controlを起動します。

  2. ナビゲーション・ペインで、「ポリシー管理」を選択して、「ポリシーの管理」を選択します。

    Web Services Manager Controlに、ゲートウェイなどの、現在登録されているOracle WSMコンポーネントのリストが表示されます。

  3. コンテンツ・ルーティングを追加するゲートウェイの「編集」をクリックします。

    Web Services Manager Controlには、そのゲートウェイ・コンポーネントに現在割り当てられているプロパティのリストを示す「コンポーネント・プロパティの編集」ページが表示されます。

    図4-1 「コンポーネント・プロパティの編集」ページ

    図4-1の説明が続きます。
    「図4-1 「コンポーネント・プロパティの編集」ページ」の説明

  4. 「コンテンツ・ルーティング」をクリックします。

    Web Services Manager Controlには、そのゲートウェイに現在定義されているコンテンツ・ルーティング・ルールのリストが表示されます(1つ以上定義されている場合)。

    図4-2 コンテンツ・ルーティング詳細のページ

    図4-2の説明が続きます。
    「図4-2 コンテンツ・ルーティング詳細のページ」の説明

    Oracle WSMは、条件No matchに基づいてデフォルトのコンテンツ・ルーティング・ルールを提供します。条件No matchは他のコンテンツ・ルーティングの条件が一致しない場合に起動します。

  5. 「追加」をクリックします。

    Web Services Manager Controlに、空の「ルールの追加/編集」ページが表示されます。このページで、新しいコンテンツ・ルーティング・ルールに条件とアクションを指定します。デフォルトでは、SOAP ENVELOPEオプションが選択されています。

  6. 「If」フィールドにSOAPメッセージのIF条件を入力して、「Then」フィールドにメッセージのルーティング先のWebサービスを入力します。


    注意:

    特定のサービスの場所にメッセージをルーティングするために、そのサービス名(サービスの登録時に指定)またはサービスID番号(SID)を指定できます。

  7. 「参照先」をクリックして、ルールのIF条件に含まれるXPath変数のネームスペースを指定します(図4-3)。

    保険会社の例では、最初のコンテンツ・ルーティング・ルールは次のようになります。/soap:Envelope/soap:Body/r:RFQ/clientTypeHOMEOWNERと等しく、SOAPネームスペースがhttp://schemas.xmlsoap.org/soap/envelope/rネームスペースがhttp://businessdocs.com/RFQである場合、Service1にルーティングします。

    図4-3 「コンテンツ・ルーティング」ページ

    図4-3の説明が続きます。
    「図4-3 「コンテンツ・ルーティング」ページ」の説明

  8. エントリを完了したら、「保存」をクリックします。

    Web Services Manager Controlにコンテンツ・ルーティング・ルールが一覧表示され、追加した新しいルールも表示されます。

    ルールの表示順序は、ゲートウェイに送信されるメッセージにコンテンツ・ルーティング・ルールが適用される順序です。受信メッセージは、Oracle WSM Gatewayがtrueとして検証した最初のルールに従ってルーティングされます。ルールの表示順序は、使用する環境に最適な選択基準になるように変更できます。

  9. ルールの順序を変更するには、上矢印または下矢印をクリックします。

「ネームスペース」をクリックすると、このゲートウェイに定義されたすべてのルールで使用するすべてのXMLネームスペースを表示するウィンドウが開きます。

図4-4 コンテンツ・ルーティング・ルールのネームスペース・マッピング

図4-4の説明が続きます。
「図4-4 コンテンツ・ルーティング・ルールのネームスペース・マッピング」の説明

ゲートウェイのすべてのコンテンツ・ルーティング・ルールの中で、1つの接頭辞は1つのネームスペースに対してのみマッピングできます。図4-4には、rおよびsoapという2つの接頭辞があります。たとえば、どちらもsoapという名前の同じ接頭辞がある場合、これらを別々のネームスペースにマッピングすることはできません。

添付ファイルのXPathコンテンツを使用したルールの作成

SOAPメッセージのXMLコンテンツに基づいてコンテンツ・ルーティング・ルールを定義する以外に、SOAP添付ファイルのXPathコンテンツに基づくルールを定義することもできます。

添付ファイルのXPathコンテンツを使用してルールを作成するには

  1. コンテンツ・ルーティング・ルールを定義するゲートウェイのコンポーネント管理者としてログインし、Web Services Manager Controlを起動します。

  2. ナビゲーション・ペインで、「ポリシー管理」をクリックして、「ポリシーの管理」をクリックします。

    Web Services Manager Controlに、ゲートウェイなどの、現在登録されているOracle WSMコンポーネントのリストが表示されます。

  3. コンテンツ・ルーティングを追加するゲートウェイの「編集」をクリックします。

    Web Services Manager Controlには、そのゲートウェイ・コンポーネントに現在割り当てられているプロパティのリストを示す「コンポーネント・プロパティの編集」ページが表示されます。

  4. 「コンテンツ・ルーティング」をクリックします。

    Web Services Manager Controlには、そのゲートウェイに現在定義されているコンテンツ・ルーティング・ルールのリストが表示されます(1つ以上定義されている場合)。

  5. 「追加」をクリックして、ATTACHMENT XPATHオプションを選択します。

    Web Services Manager Controlには、「ルールの追加/編集」ページが表示されます。

  6. メッセージに対して添付ファイルを特定する、関連のXPath変数(SOAPメッセージに含まれる)を指定します。たとえば、次のようになります。

    /soap:Envelope/soap:Body/source/@href
    
    
  7. 添付ファイルのコンテンツと一致する、1つ以上のルール条件を入力します。「If」フィールドに、添付ファイルにあるXPath変数を指定します。たとえば、次のようになります。

    IF /policy/model EQUALS lexus

  8. 「参照先」をクリックして、ルールのIF条件に含まれるXPath変数のネームスペースを指定します。たとえば、次のようになります。

    http://schemas.xmlsoap.org/envelope

  9. 「Then」フィールドに、メッセージのルーティング先のWebサービスを指定します。

  10. 「保存」をクリックします。

    新しい添付ファイルのXPathルールが、定義されたゲートウェイのコンテンツ・ルーティング・ルールに表示されます。


    注意:

    添付ファイルのXPathコンテンツ・ルーティング・ルールは、XMLコンテンツを含む添付ファイルの場合にのみ定義できます。これらの添付ファイルは、SOAP-with-Attachments仕様を使用して、SOAPメッセージ内で参照する必要があります。