WebSphere Service Registry and Repository Connectivity サンプルについて

WebSphere Service Registry and Repository (WSRR) Connectivity サンプルは、実行時に呼び出す Web サービスを動的に選択するために、 企業が WebSphere Service Registry and Repository を使用するシナリオに基づいています。 このサンプルでは、EndpointLookup ノードでサービス・レジストリーから WSDL ファイルを取得して、 Web サービスを呼び出す方法を示しますが、サービス・レジストリーは、RegistryLookup ノードを使用して取得可能なその他のタイプの文書も保管できます。 これらの 2 つのノードは、サービス・レジストリーからさまざまなタイプの文書を取得するために使用されます。ただし、両方のノードの構成は同じであるため、このサンプルの構成例を使用して、RegistryLookup ノードを使用することができます。

下の図は、メッセージ・フロー内で WebSphere Service Registry and Repository Connectivity を使用するアーキテクチャーを示しています。

WebSphere Service Registry and Repository Connectivity アーキテクチャーの図。

WebSphere Service Registry and Repository Connectivity サンプルでは、以下のタスクを示します。

サンプルの Web サービスである DemoCustomer サービスは、updateCustomer 要求を受け入れて、 updateCustomerResponse メッセージを戻します。 Enterprise Service Bus (ESB) とレジストリーの共通の要件は、同じサービスについて 2 つ以上のバージョンが存在する場合に、サービスを容易に呼び出せるようにすることです。ESB は、要求に基づく適切なサービス呼び出しが可能でなければなりません。レジストリーは、複数のサービスに適応して、それらを発見および使用できるようにする必要があります。このサンプルでは、DemoCustomer Web サービスの 2 つのバージョンが存在します。両方とも、WebSphere Message Broker で実行するメッセージ・フローを使用して実装されます。 EndpointLookup ノードの静的プロパティーを使用するときは、バージョン 1.0 が呼び出されます。 実行時のオーバーライド情報が入力 SOAP メッセージに含まれるときは、バージョン 2.0 が呼び出されます。

メッセージ

WebSphere Service Registry and Repository Connectivity サンプルを実行するために、以下の 3 つの入力メッセージが用意されています。

以下のメッセージは、EndpointLookup ノードの静的プロパティーで決定された Web サービスを呼び出す SOAP メッセージです (バージョン 1.0)。

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <Request>
      <Verb>UpdateCustomer</Verb>
      <Data>
        <Customer>ABC</Customer>
      </Data>
    </Request>
  </soapenv:Body>
</soapenv:Envelope>

以下のメッセージは、実行時のオーバーライドにより決定された Web サービスを呼び出す SOAP メッセージです (バージョン 2.0)。 このメッセージは、前のメッセージと同様ですが、「Version」タグが追加されています。このタグは、 実行時にサービス・レジストリーからバージョン 2.0 の WSDL を取得するために使用されます。

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope 	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <Request>
      <Version>2.0</Version>
      <Verb>UpdateCustomer</Verb>
      <Data>
        <Customer>ABC</Customer>
      </Data>
    </Request>
  </soapenv:Body>
</soapenv:Envelope>

以下のメッセージは、サービス・レジストリー内のどの文書にも一致しない「Version」プロパティーを含む SOAP メッセージです。

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope 	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <Request>
      <Version>3.0</Version>
      <Verb>UpdateCustomer</Verb>
      <Data>
        <Customer>ABC</Customer>
      </Data>
    </Request>
  </soapenv:Body>
</soapenv:Envelope>

メッセージ・フロー

次の図は、メイン・メッセージ・フローを示しています。

メイン・メッセージ・フローの画面取り

ノード・タイプ ノード名
MQInput WSRR_IN
MQOutput WSRR_OUT
Compute SetVersion、InformFailure、InformWSResult、InformNoMatch
EndpointLookup Endpoint Lookup One
SOAPRequest SOAP Request

次の図は、Web サービス・フローを示しています。この Web サービス・フローの 2 つのバージョンが示されています。 2 つのバージョンの違いは、Compute ノードにあります。このノードは、呼び出されたバージョンを示す応答を別途戻します。

Web サービス・フローの画面取り。

ノード・タイプ ノード名
SOAPInput SOAP DempCustomer
Compute Create WS Response
SOAPReply SOAP Reply

WSRR Connectivity サンプルで使用されるノードについてさらに詳しく調べるには、WebSphere Message Broker の資料で、ビルトイン・ノードを参照してください。

最初の (静的バージョンの) メッセージがたどる経路

入力キューに最初のメッセージを書き込むと、そのメッセージは、このトピックで後に説明されるように各ノードを通過します。 いずれかのキューが使用不可になっている場合には、メッセージはこのパスを通ることはできません。

メイン・メッセージ・フロー内の各ノードには、以下の機能があります。

  1. WSRR.IN: このノードは、入力キューから入力メッセージを取得します。
  2. SetVersion: この Compute ノードは、「Version」プロパティーをオーバーライドします。 このメッセージには「Version」タグがないため、ローカル環境では何も置換されません。したがって、 EndpointLookup ノードの静的な「Version」プロパティーを使用して、バージョン 1.0 の WSDL がサービス・レジストリーから取得されます。
  3. EndpointLookupOne: このノードは、サービス・レジストリーに接続して、必要な WSDL 文書 (EndpointLookup ノードの構成で定義されたバージョン 1.0) を取得する EndpointLookup ノードです。 メッセージは、接続されている 3 つのノードのいずれかに伝搬されますが、これは、サービス・レジストリーから正常に (またはそれ以外で) 取得した、一致する WSDL 文書により決定されます。 EndpointLookup ノードは、一致する WSDL 文書を「1 つ」だけ取得するように構成されているため、 このノードを Compute ノードで追跡する必要はありません。 一致する WSDL 文書を「すべて」取得するように EndpointLookup ノードが構成されている場合は、 このノードを Compute ノードで追跡して、取得した文書を照会する必要があります。 Compute ノードを使用すると、SOAPRequest ノードに送信する文書を選択できます (前述のアーキテクチャー図を参照)。
  4. InformFailure: サービス・レジストリーに接続するとき、または接続している間に WebSphere Message Broker がエラーを検出した場合は、このノードにメッセージが伝搬されます。
  5. SOAPRequest: EndpointLookup ノードが、必要な WSDL 文書をサービス・レジストリーから正常に取得した場合は、このノードにメッセージが伝搬されます。 このノードは、WSDL のエンドポイントで決定された Web サービスに SOAP メッセージを送信します。
  6. InformWSResult: Web サービスの呼び出しが成功すると、このノードは、メッセージの HTTP ヘッダーを MQMD ヘッダーに変換して、MQOutput ノードに応答を伝搬します。
  7. InformNoMatch: 一致する WSDL 文書がサービス・レジストリーで見つからない場合は、このノードにメッセージが伝搬されます。
  8. WSRR.OUT: このノードは、WSRR.OUT 出力キューにメッセージを書き込みます。
Web サービス・フロー内の各ノードには、以下の機能があります。
  1. SOAPDemoCustomerMB: この SOAPInput ノードは、メイン・メッセージ・フローから SOAP メッセージを受け取ります。
  2. Compute: このノードは、応答を生成します。
  3. SOAPReply: このノードは、呼び出し側のアプリケーションである SOAPRequest ノードに応答を送信します。

2 番目の (ランタイム・バージョンの) メッセージがたどる経路

経路は前述のとおりですが、以下の点が異なります。

3 番目の (一致なしの) メッセージがたどる経路

経路は前述のとおりですが、以下の点が異なります。

このサンプルの目的は、入力メッセージを読み取り、サービス・レジストリーに接続して、 WSDL 文書を取得することです。 一致する文書が見つかった場合は、関連する Web サービスが呼び出され、メッセージが別のキューに書き込まれます。 一致する文書が見つからない場合は、不一致を示すメッセージがキューに書き込まれます。

詳しくは、WebSphere Message Broker 資料のWebSphere Service Registry and Repositoryを参照してください。

サンプルのホームに戻る