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 サンプルでは、以下のタスクを示します。
サンプルの 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 ノードにあります。このノードは、呼び出されたバージョンを示す応答を別途戻します。
ノード・タイプ | ノード名 |
---|---|
SOAPInput | SOAP DempCustomer |
Compute | Create WS Response |
SOAPReply | SOAP Reply |
WSRR Connectivity サンプルで使用されるノードについてさらに詳しく調べるには、WebSphere Message Broker の資料で、ビルトイン・ノードを参照してください。
入力キューに最初のメッセージを書き込むと、そのメッセージは、このトピックで後に説明されるように各ノードを通過します。 いずれかのキューが使用不可になっている場合には、メッセージはこのパスを通ることはできません。
メイン・メッセージ・フロー内の各ノードには、以下の機能があります。
経路は前述のとおりですが、以下の点が異なります。
経路は前述のとおりですが、以下の点が異なります。
このサンプルの目的は、入力メッセージを読み取り、サービス・レジストリーに接続して、 WSDL 文書を取得することです。 一致する文書が見つかった場合は、関連する Web サービスが呼び出され、メッセージが別のキューに書き込まれます。 一致する文書が見つからない場合は、不一致を示すメッセージがキューに書き込まれます。
詳しくは、WebSphere Message Broker 資料のWebSphere Service Registry and Repositoryを参照してください。