Der Mustercode 'WebSphere Service Registry and Repository (WSRR) Connectivity' basiert auf einem Szenario, bei dem ein Unternehmen mithilfe von WebSphere Service Registry and Repository (WSRR) dynamisch einen Web-Service auswählt, der zur Laufzeit aufgerufen werden soll. Zwar veranschaulicht der Mustercode die Verwendung des 'EndpointLookup'-Knotens zum Abrufen von WSDL-Dateien aus der Service Registry zum Auslösen eines Web-Services; die Service Registry kann aber auch andere Dokumenttypen speichern, die mithilfe des 'RegistryLookup'-Knotens abgerufen werden können. Obwohl beide Knoten zum Abrufen verschiedener Dokumenttypen aus der Service Registry verwendet werden, ist ihre Konfiguration identisch. Sie können also den 'RegistryLookup'-Knoten mit der Beispielkonfiguration aus diesem Mustercode verwenden.
Das nachfolgende Diagramm zeigt die Architektur bei der Verwendung der WSRR-Konnektivität in einem Nachrichtenfluss.
Im Mustercode 'WebSphere Service Registry and Repository Connectivity' werden folgende Tasks veranschaulicht:
Der Web-Service im Mustercode heißt 'DemoCustomer'-Services. Er akzeptiert 'updateCustomer'-Anforderungen und gibt 'updateCustomerResponse'-Nachrichten zurück. Eine allgemeine Anforderung eines Enterprise Service Bus (ESB) und der Registry ist es, den Serviceaufruf zu vereinfachen, wenn zwei oder mehr Versionen eines Services existieren. Der ESB muss in der Lage sein, den geeigneten Service auf Grundlage der Anforderung aufzurufen. Die Registry muss in der Lage sein, mehrere Services aufzunehmen, damit diese ermittelt und verwendet werden können. In diesem Mustercode existieren zwei Versionen des 'DemoCustomer'-Web-Services. Beide wurden mithilfe von Nachrichtenflüssen implementiert, die in WebSphere Message Broker ausgeführt werden. Version 1.0 wird aufgerufen, wenn die statischen Eigenschaften des 'EndpointLookup'-Knotens verwendet werden. Version 2.0 wird aufgerufen, wenn die Eingabe-SOAP-Nachricht Informationen zu Überschreibungen zur Laufzeit enthält.
Zur Ausführung des Mustercodes 'WebSphere Service Registry and Repository Connectivity' stehen drei Eingabenachrichten zur Verfügung:
Bei der nachfolgenden Nachricht handelt es sich um die SOAP-Nachricht zum Aufrufen des Web-Services, der durch die statischen Eigenschaften des 'EndpointLookup'-Knotens (Version 1.0) festgelegt wird:
<?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>
Bei der nachfolgenden Nachricht handelt es sich um die SOAP-Nachricht zum Aufrufen des Web-Services, der durch die Laufzeitüberschreibungen (Version 2.0) festgelegt wird. Die Nachricht ist mit der vorherigen Nachricht identisch, enthält jedoch zusätzlich den Version-Tag, mit dem zur Laufzeit die Version 2.0 der WSDL aus der Service Registry abgerufen wird:
<?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>
Bei der nachfolgenden Nachricht handelt es sich um die SOAP-Nachricht mit der Ei genschaft Version, die keinem Dokument in der Service Registry entspricht:
<?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>
Im folgenden Diagramm ist der Hauptnachrichtenfluss dargestellt.
Knotentyp | Knotenname |
---|---|
MQInput | WSRR_IN |
MQOutput | WSRR_OUT |
Rechnen | SetVersion, InformFailure, InformWSResult, InformNoMatch |
EndpointLookup | Endpoint Lookup One |
SOAPRequest | SOAP Request |
Im folgenden Diagramm ist der Web-Service-Nachrichtenfluss dargestellt. Es werden zwei Versionen dieses Web-Service-Nachrichtenflusses gezeigt. Die Versionen unterscheiden sich im Rechenknoten, der eine andere Antwort zurückgibt, um zu identifizieren, welche Version aufgerufen wurde.
Knotentyp | Knotenname |
---|---|
SOAPInput | SOAP DempCustomer |
Rechnen | Create WS Response |
SOAPReply | SOAP Reply-Knoten |
Weitere Informationen zu den im Mustercode 'WSSR-Konnektivität' verwendeten Knoten finden Sie in der Dokumentation zu WebSphere Message Broker im Abschnitt Integrierte Knoten.
Wenn Sie die erste Nachricht in die Eingabewarteschlange stellen, wird die Nachricht, wie später in diesem Thema beschrieben, über die Knoten gesendet. Wenn eine der Warteschlangen inaktiviert ist, kann die Nachricht dieser Route nicht folgen.
Die Knoten im Hauptnachrichtenfluss haben folgende Funktionen:
Die Route entspricht der zuvor beschriebenen, jedoch mit folgenden Unterschieden:
Die Route entspricht der zuvor beschriebenen, jedoch mit folgenden Unterschieden:
Zweck dieses Mustercodes ist es, eine Eingabenachricht zu lesen und eine Verbindung zur Service Registry herzustellen, um ein WSDL-Dokument abzurufen. Wenn ein entsprechendes Dokument gefunden wird, rufen Sie den relevanten Web-Service auf und schreiben Sie die Nachricht in eine andere Warteschlange. Wird kein entsprechendes Dokument gefunden, wird die Nachricht "No match" (Keine Entsprechung) in die Warteschlange geschrieben.
Weitere Informationen finden Sie in der Dokumentation zu WebSphere Message Broker im Abschnitt WebSphere Service Registry and Repository.