Informationen zum Mustercode 'WebSphere Service Registry and Repository Connectivity'

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.

Abbildung der WSRR-Konnektivitätsarchitektur.

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.

Nachrichten

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>

Nachrichtenflüsse

Im folgenden Diagramm ist der Hauptnachrichtenfluss dargestellt.

Anzeigenerfassung des Hauptnachrichtenflusses.

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.

Screenshot des Web-Service-Nachrichtenflusses.

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.

Die Route, die von der ersten Nachricht (statische Version) genommen wird

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:

  1. WSRR.IN: Der Knoten ruft die Eingabenachricht aus der Eingabewarteschlange ab.
  2. SetVersion: Dieser Rechenknoten überschreibt die Eigenschaft Version. Da in dieser Nachricht kein Version-Tag enthalten ist, werden in der lokalen Umgebung keine Ersetzungen vorgenommen. Daher wird mithilfe der Eigenschaft Version im 'EndpointLookup'-Knoten Version 1.0 der WSDL aus der Service Registry abgerufen.
  3. EndpointLookupOne: Dieser Knoten ist der 'EndpointLookup'-Knoten, der eine Verbindung zur Service Registry herstellt und das angeforderte WSDL-Dokument abruft (Version 1.0, gemäß Festlegung in der Konfiguration des 'EndpointLookup'-Knotens). Die Nachricht wird je nach erfolgreichem (oder anderem) Abrufen eines entsprechenden WSDL-Dokuments aus der Service Registry an einen der drei festnetzgebundenen Knoten weitergeleitet. Da der 'EndpointLookup'-Knoten so konfiguriert ist, dass er nur "ein" entsprechendes WSDL-Dokument abruft, muss dieser Knoten nicht mit einem Rechenknoten verfolgt werden. Wenn der 'EndpointLookup'-Knoten so konfiguriert ist, dass er "alle" entsprechenden WSDL-Dokumente abruft, verfolgen Sie ihn mit einem Rechenknoten, um die abgerufenen Dokumente abzufragen. Mit dem Rechenknoten können Sie das Dokument auswählen, das an den 'SOAPRequest'-Knoten gesendet werden soll (siehe Architekturabbildung oben).
  4. InformFailure : Die Nachricht wird an diesen Knoten weitergegeben, wenn WebSphere Message Broker Fehler bei der Verbindungsherstellung oder während der Verbindung zur Service Registry feststellt.
  5. SOAPRequest : Die Nachricht wird an diesen Knoten weitergegeben, wenn der 'EndpointLookup'-Knoten das angeforderte WSDL-Dokument erfolgreich aus der Service Registry abgerufen hat. Der Knoten sendet die SOAP-Nachricht an den Web-Service, der durch den Endpunkt in der WSDL festgelegt wird.
  6. InformWSResult: Bei erfolgreichem Aufruf des Web-Services konvertiert dieser Knoten die HTTP-Header in der Nachricht in MQMD-Header um, um die Antwort an den 'MQOutput'-Knoten weiterzugeben.
  7. InformNoMatch: Die Nachricht wird an diesen Knoten weitergegeben, wenn die Service Registry kein entsprechendes WSDL-Dokument finden kann.
  8. WSRR.OUT : Dieser Knoten stellt die Nachricht in die WSRR.OUT-Ausgabewarteschlange ein.
Die Knoten im Web-Service-Nachrichtenfluss haben folgende Funktionen:
  1. SOAPDemoCustomerMB: Dieser SOAPInput-Knoten empfängt die SOAP-Nachricht aus dem Hauptnachrichtenfluss.
  2. Compute: Dieser Knoten generiert eine Antwort.
  3. SOAPReply: Dieser Knoten sendet die Antwort an die aufrufende Anwendung, den SOAPRequest-Knoten.

Die Route, die von der zweiten Nachricht (Laufzeitversion) genommen wird

Die Route entspricht der zuvor beschriebenen, jedoch mit folgenden Unterschieden:

Die Route, die von der dritten Nachricht (No Match, Keine Entsprechung) genommen wird

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.

Zurück zum Beginn des Mustercodes