Implementierung eines neuen Web-Services durch den Broker

Informieren Sie sich über ein typisches End-to-End-Szenario, in dem der Broker einen Web-Service implementiert.

Ein bestehendes, auf C oder COBOL basierendes System bietet eine Geschäftslogik an, die auf nützliche Weise einem Web-Service zugänglich gemacht werden kann.

Der Broker kann die Operation auf dem vorhandenen System starten, d. h., das System macht eine Schnittstelle für den Broker zugänglich. Üblicherweise wird das bestehende System für WebSphere MQ aktiviert; es empfängt WebSphere MQ-Nachrichten mit Anwendungsdaten, übergibt diese an die zugrunde liegende Implementierung und verpackt anschließend die Rückgabewerte WebSphere MQ-Antwort. Die Datenstrukturen, die an diese bestehenden Operationen geliefert und von diesen zurückgegeben werden, sind in einer C-Headerdatei oder einem COBOL-Copybook definiert.

Der Web-Service bietet eine Schnittstelle auf Basis der Operationen, die bereits vom bestehenden System zugänglich gemacht wurden. Diese Schnittstelle kann alle bestehenden Operationen, eine Teilmenge davon und/oder kombinierte Operationen umfassen.

So definieren Sie die Schnittstelle:
  1. Schauen Sie sich die vom bestehenden System angebotene Geschäftsfunktion genau an.
  2. Wählen Sie die Teilmenge der Geschäftsfunktion aus, die zugänglich gemacht werden soll.
  3. Entscheiden Sie, wie diese Teilmenge in der Schnittstelle dargestellt werden soll: als viele diskrete Operationen oder wenige Mehrzweckoperationen.
Sie müssen entscheiden, ob die Web-Service-Schnittstelle dem RPC-Format (style=rpc) oder dem Dokumentformat (style=document) entsprechen soll. Weitere Informationen zu Web-Services, WSDL und Nachrichtenflüssen finden Sie im Abschnitt Beziehung zwischen WSDL-Definition und Nachrichtenmodell.
  • Eine Schnittstelle im RPC-Format wird normalerweise entworfen, um sie einer zugrunde liegenden Gruppe von Operationen, die von einer API zur Verfügung gestellt werden, zuzuordnen. Dabei enthalten die einzelnen Operationen (Methodenaufrufe) relativ wenig Nutzdaten.
  • Eine Schnittstelle im Dokumentformat besteht möglicherweise aus weniger Operationen, die jedoch mehr Nutzdaten enthalten, z. B. kann ein Dokument einen Kreditantrag darstellen.
Die Web Services Interoperability Organization (WS-I) empfiehlt, nur WSDL im Dokumentformat zu verwenden. Allerdings verwenden viele ältere Web-Services das RPC-Format.

So implementieren Sie das Szenario:

  1. Importieren Sie die bestehenden API-Datenstrukturen, z. B. mit dem C-Importprogramm. Wenn WSDL im Dokumentformat verwendet wird, müssen Sie mithilfe des Importprogramms die erforderlichen globalen Elemente im Brokermodell erstellen. Die WS-I empfiehlt, die Web-Service-Nutzdaten durch Namespaces zu qualifizieren. Der Benutzer muss daher beim Importieren den Ziel-Namespace angeben.

    Sie verfügen nun über ein Nachrichtenmodell für die Daten zum Aufrufen der bestehenden Operationen.

  2. Generieren Sie die WSDL-Definition. Sofern Sie die erforderlichen Nachrichtenkategorien noch nicht erstellt haben, erstellen Sie eine Nachrichtenkategorie für jede Web-Service-Operation, die zugänglich gemacht werden soll, und ordnen Sie die bestehenden Brokernachrichten den entsprechenden SOAP-Rollen (Eingabe, Ausgabe oder Fehler) zu. Der Abschnitt Mit Nachrichtenkategoriedateien arbeiten enthält weitere Informationen hierzu.
    • Wenn Sie sich für WSDL im Dokumentformat entscheiden, wird die Nachrichtengruppe selbst nicht geändert.
    • Wenn Sie sich für WSDL im RPC-Format entscheiden, werden Nachrichten, die der Anforderung und Antwort jeder einzelnen WSDL-Operation entsprechen, erstellt und automatisch zur Nachrichtengruppe hinzugefügt.
  3. Als Ergebnis der WSDL-Generierung werden die entsprechenden SOAP-Nachrichtendefinitionsdateien (MXSD-Dateien), zu denen die MXSD-Datei mit der SOAP-Rahmenanweisung und (wenn das WSDL-Format RPC-codiert ist) die MXSD-Datei mit der SOAP-Codierung gehören, automatisch in die Nachrichtengruppe eingeschlossen.
  4. Wenn Sie einen neuen Web-Service-Client erstellen möchten, verwenden Sie die generierte WSDL-Definition mit der von Ihnen ausgewählten Web-Service-Client-Technologie. Verwenden Sie dazu ein anderes Tool als WebSphere Message Broker, z. B. Rational Application Developer oder .NET.
  5. Implementieren Sie einen Nachrichtenfluss, um die Web-Service-Anforderung zu empfangen, d. h., er agiert als der Web-Service-Provider. Bei den Endpunktknoten handelt es sich um HTTP oder WebSphere MQ, abhängig von der vom Client verwendeten Transportmethode. Der Empfangsknoten hat folgende Merkmale:
    • Nachrichtendomäne: MRM
    • Nachrichtengruppe: die Nachrichtengruppe mit der Definition der SOAP-Rahmenanweisung
    • Nachrichtentyp: Envelope
    • Nachrichtenformat: XML1
  6. Nach dem Start durch den Nachrichtenfluss erstellt der Parser eine logische Baumstruktur, einschließlich der SOAP-Rahmenanweisung, so wie sie durch die vordefinierte SOAP-Nachrichtendefinitionsdatei (MXSD-Datei) definiert ist. Das Parsing wird automatisch an den Anschlusspunkten innerhalb der SOAP-Rahmenanweisung (SOAP-Hauptteil und -Header) fortgesetzt, wobei versucht wird, einen Abgleich mit anderen Nachrichtendefinitionen in der Nachrichtengruppe vorzunehmen. Führen Sie, falls erforderlich, eine Prüfung am Empfangsknoten durch.

    Sie verfügen nun über eine logische Baumstruktur, wissen jedoch nicht, welche SOAP-Nutzdaten empfangen wurden. Überprüfen Sie das HTTP-Aktionsfeld 'SOAPAction', um den wahrscheinlichen Inhalt zu ermitteln. Dies ist jedoch nur bei HTTP möglich. (Die Nutzung von 'SOAPAction' wird von der WS-I nicht empfohlen.)

  7. Sie können eine Zuordnung von den zulässigen Nutzdatennachrichten zu den erforderlichen Nachrichten vom bestehenden System bereitstellen. Beispielsweise können Sie eine einzige Zuordnungsdefinition mit den Nachrichten Nachricht1a und Nachricht1b verwenden, in der beide Nachrichten demselben Ziel, nämlich Nachricht2, zugeordnet sind.
    Alternativ können Sie getrennte Zuordnungen für jeden Nachrichtentyp oder für Gruppen zusammengehöriger Nachrichtentypen bereitstellen. Diese Vorgehensweise hat den Vorteil, dass Zuordnungsdefinitionen einfacher verwaltet und wiederverwendet werden können. Der Nachteil besteht darin, dass Sie die Zuordnung erst anwenden können, wenn Sie ermittelt haben, welche Nutzdaten empfangen wurden. Welche Nutzdaten empfangen wurden, können Sie unter Verwendung von ESQL wie folgt feststellen:
     
     DECLARE SOAPENV NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
     SET contentType = FIELDNAME(InputBody.SOAPENV:Body.*[<]);
     IF (contentType = 'foo') ...
     
    Alternativ kann eine Feldreferenz verwendet werden, z. B.:
     
     DECLARE R REFERENCE TO InputRoot.MRM.SOAPENV:Body.*[<];
     IF (FIELDNAME(R) = "foo") ...
     
    Wenn Sie die Nutzdaten bestimmt haben, können Sie den Fluss dem Zweig entsprechend zuordnen (z. B. unter Verwendung eines RouteToLabel-Knotens), wobei jeder Zweig über einen inhaltsspezifischen Mapping-Knoten und/oder Compute-Knoten verfügt. Bei einfachen Nachrichtenflüssen können Sie die gesamte Logik bei Bedarf in einem einzelnen Compute-Knoten codieren.

    Starten Sie jetzt das bestehende System (üblicherweise über WebSphere MQ), rufen Sie die erwartete Antwort ab, und geben Sie die Web-Service-Antwort weiter. Der Nachrichtenflussentwickler muss die Möglichkeit berücksichtigen, dass die Geschäftsanwendung die erwartete Antwort nicht innerhalb eines angemessenen Zeitraums sendet.

Ein ähnliches Szenario finden Sie im folgenden Beispiel: Sie können Beispiele nur anzeigen, wenn Sie das Information Center verwenden, das im Message Brokers Toolkit integriert ist.
Zugehörige Konzepte
Nachrichtenflüsse bei der XML-Domäne
Broker ruft bestehenden Web-Service auf
Broker implementiert neue Web-Service-Schnittstelle
Broker implementiert bestehende Web-Service-Schnittstelle
Broker implementiert Schnittstelle, die nicht auf Web-Service basiert, in neuem Web-Service
Beziehung zwischen WSDL-Definition und Nachrichtenmodell
Zugehörige Tasks
Implementierung einer bestehenden Web-Service-Schnittstelle durch den Broker
Broker ruft bestehenden Web-Service auf - Details
Mit Nachrichtenkategoriedateien arbeiten
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:28:30

ac34570_