Zuordnung von SDO-Datengraphen für Web-Service-Nachrichten

Die Struktur von Web-Service-Nachrichten wird mit SDO-Datengraphen (Service Data Objects) der Version 1 für Web-Service-Nachrichten beschrieben.

Allgemeines Layout einer Web-Service-Nachricht

Eine Web-Service-Nachricht wird mit einer Formatierzeichenfolge und drei Metadatenfeldern (operationName, messageName und messageType) beschrieben. Die Nutzdaten der Nachricht werden auf die drei anderen Abschnitte, Header, Abhänge und Hauptteil (oder Body) verteilt.

Der Knoten Info ist der Ausgangsknoten im SDO-Datengraphen aller Web-Service-Nachrichten. In der folgenden Tabelle sind die Informationseigenschaften für Knoten und die zugehörigen Typen beschrieben.

Eigenschaftsname Eigenschaftstyp Eigenschaftsbeschreibung
operationName java.lang.String Gibt die WSDL-Operation an, die der Nachricht zugeordnet ist. Wenn der Service für Datenzugriff die Nachricht nicht erkennt, ist dieses Feld nicht definiert. Informationen hierzu finden Sie im Artikel Web-Service-Nachrichten erkennen.
messageName java.lang.String Gibt die WSDL-Nachricht an, die der Nachricht zugeordnet ist. Wenn der Service für Datenzugriff die Nachricht nicht erkennt, ist dieses Feld nicht definiert. Informationen hierzu finden Sie im Artikel Web-Service-Nachrichten erkennen.
messageType java.lang.String Gibt den WebService-Typ der Nachrichteninstanz an. Gültige Werte für dieses Feld sind input, output, fault und ambiguous. Wenn der Service für Datenzugriff die Nachricht nicht erkennt, ist dieses Feld nicht definiert. Informationen hierzu finden Sie im Artikel Web-Service-Nachrichten erkennen.
headers java.util.List von Datenobjekten. Enthält eine Liste mit Datenobjekten für Headereinträge. Jeder SOAP-Header in der Nachricht führt zu einem Headereintrag in der Liste. Informationen hierzu finden Sie im Artikel Layout der Nachrichten-Header.
attachments java.util.List von Datenobjekten. Enthält ein Liste mit Datenobjekten für Anhangseinträge. Für SOAP-Nachrichten mit Anhängen wird jeder MIME-Abschnitt der Nachricht (mit Ausnahme des MIME-Abschnitts mit dem SOAP-Envelope) einem Eintrag in dieser Liste zugeordnet. Informationen hierzu finden Sie im Artikel Layout von Nachrichtenanhängen.
body commonj.sdo.DataObject Ein verschachteltes Datenobjekt für den Hauptteil (Body) der SOAP-Rahmenanweisung. Informationen hierzu finden Sie im Artikel Layout des Nachrichtenhauptteils.

Web-Service-Nachrichten erkennen

Die Verarbeitung der Nachrichten richtet sich danach, ob die Nachrichten WSDL-Definition haben. Die für die Verarbeitung von Nachrichten ohne WSDL erforderlichen Mindestinformation ist "SOAP:" und für Nachrichten mit WSDL "SOAP:location,namespace,service,port". Wenn die Formatierzeichenfolge nicht alle fünf Felder enthält, versucht der SOPA-Datenzugriffsservice, die Nachricht ohne WSDL zu verarbeiten.

  • Nachrichten ohne WSDL-Definitionen verarbeiten: Wenn die Formatierzeichenfolge nicht die vollständigen WSDL-Informationen enthält, verarbeitet der SOAP-Datenzugriffsservice die Nachricht, ohne zu versuchen, sie mit den Definitionen in der WSDL abzugleichen. operationName und messageName werden auf null gesetzt, und das Feld messageType wird nur gesetzt, wenn eine Fehlernachricht verarbeitet wird.
  • Nachrichten mit WSDL-Definitionen verarbeiten: Wenn die Formatierzeichenfolge <WSDL-Position>, <Service-Namespace>, <Servicename> und <Portname> enthält, verarbeiten die SOAP- und Bean-Datenzugriffsservices die Nachricht mit den WSDL-Definitionen des Service.
    Anmerkung: In den folgenden Situationen scheitert die Verarbeitung von SOAP-Nachrichten, nachdem alle erforderlichen WSDL-Informationen angegeben wurden:
    • Der SOAP-Datenzugriffsserver findet die WSDL nicht.
    • Die WSDL bestätigt die Nachricht nicht.

Wenn der SOAP-Datenzugriffsservice eine SOAP-Anforderung oder -Antwort verarbeitet, vergleicht er sie mit den Nachrichtendefinitionen in der WSDL. Normalerweise wird eine einzige Übereinstimmung gefunden, und die Felder operationName, messageName und messageType sind ordnungsgemäß ausgefüllt. Sind mehrere übereinstimmende Definitionen vorhanden, wählt der Datenzugriffsservice eine Nachrichtendefinition aus, füllt die Felder operationName und messageName aus und setzt das Feld messageType auf ambiguous.

Bei der Verarbeitung von Fehlernachrichten ist die Identifizierung geringfügig anders. In jedem Fall wird das Feld messageType auf gfault (Fehler) gesetzt. Wenn die Nachricht einer Fehlerdefinition in der WSDL eindeutig entspricht, werden operationName und messageName ebenfalls gesetzt.

Layout der Nachrichten-Header

Die Liste der Header kann zwei Arten von Einträgen enthalten: Headereinträge oder gebundene Headereinträge. Die Art der Einträge richtet sich danach, ob der Header auf einem Abschnitt der Nachricht basiert oder nicht.

Ein Headereintrag wird verwendet, um Header zu bearbeiten, die einem oder mehreren der folgenden Kriterien entsprechen:
  • Der Header ist ein Abschnitt der Nachricht und wird in der WSDL modelliert.
  • Der Header ist ein Abschnitt der Nachricht und wird nicht in WSDL modelliert, basiert aber auf einem Abschnitt der Nachricht.
Ein Modell dieses Headers finden Sie im Artikel Headereintrag.

Der gebundene Headereintrag wird verwendet, wenn die SOAP-Bindung für die Nachricht einen Abschnitt des Nachrichtenhauptteils (oder Body) in einem MIME-Anhang gebunden hat. (Dies passiert, wenn Sie ein Element <MIME:content> verwenden, um einen Abschnitt der Nachricht an einen Anhang zu binden.) Im Hinblick auf eine konsistente Mediationsprogrammierung werden alle Daten des Nachrichtenhauptteils im Knoten "Body" des Graphen gespeichert. Anders als ein normaler Anhangseintrag wird ein gebundener Anhangseintrag in die Anhangsliste gestellt. Der gebundene Anhangseintrag enthält die MIME-Metadaten für den Anhang und den Namen des Nachrichtenabschnitts, der die aus dem Anhang entnommenen Daten enthält. Damit sind Mediations, die für die Bearbeitung von Anhängen geschrieben wurden, in der Lage, die Daten im Hauptteil des Datengraphen zu finden. Ein Modell dieses Anhangs finden Sie im Abschnitt Gebundener Headereintrag.

Headereintrag

Eigenschaftsname Eigenschaftstyp Eigenschaftsbeschreibung
mustUnderstand java.lang.Boolean Überträgt den Wert des Attributs mustUnderstand im SOAP-Header (sofern vorhanden).
actor java.lang.String Überträgt den Wert des Attributs actor im SOAP-Header (sofern vorhanden).
any commonj.sdo.Sequence Container für den Inhalt des SOAP-Headers

Gebundener Headereintrag

Eigenschaftsname Eigenschaftstyp Eigenschaftsbeschreibung
mustUnderstand java.lang.Boolean Überträgt den Wert des Attributs mustUnderstand im SOAP-Header (sofern vorhanden).
actor java.lang.String Überträgt den Wert des Attributs actor im SOAP-Header (sofern vorhanden).
messagePart java.lang.String Enthält den Namen des Nachrichtenabschnitts mit den Daten aus diesem Nachrichten-Header.

Layout von Nachrichtenanhängen

Nachrichtenanhänge werden auf ähnliche Weise wie Header behandelt. Anhangsinstanzen werden in die Anhangsliste im Knoten Info aufgenommen.

Es gibt zwei Typen von Anhangseinträgen für MIME-Anhänge: Anhangseinträge und gebundene Anhangseinträge.

Anhangseinträge werden für allgemeine Anhänge verwendet. Weitere Informationen finden Sie im Artikel Anhangseintrag.

Gebundene Anhangseinträge enthalten <MIME:content>-Elemente, die einen Abschnitt des Hauptteils (oder Body) in einem MIME-Anhang binden. Wenn Sie eine Mediation programmieren, müssen Sie wissen, wo diese Daten innerhalb des Graphen zu finden sind. Im Hinblick auf eine konsistente Programmierung von Mediations werden die Anhangsdaten im Nachrichtenhauptteil (oder Body) gespeichert und unter dem Namen des Nachrichtenabschnitts im Headereintrag, der die anderen MIME-Metadaten enthält, referenziert. Ein Modell dieses Anhangs finden Sie im Abschnitt Gebundener Anhangseintrag.

Anhangseintrag

Eigenschaftsname Eigenschaftstyp Eigenschaftsbeschreibung
contentType java.lang.String Enthält den contentType aus dem MIME-Abschnitt, der vom Anhangseintrag dargestellt wird.
contentTransferEncoding java.lang.String Enthält die contentTransferEncoding aus dem MIME-Abschnitt, der vom Anhangseintrag dargestellt wird.
contentId java.lang.String Enthält die contentId aus dem MIME-Abschnitt, der vom Anhangseintrag dargestellt wird.
data byte[] Enthält den Inhalt des MIME-Elements in Form einer Bytefeldgruppe.

Gebundener Anhangseintrag

Eigenschaftsname Eigenschaftstyp Eigenschaftsbeschreibung
contentType java.lang.String Enthält den contentType aus dem MIME-Abschnitt, der vom Anhangseintrag dargestellt wird.
contentTransferEncoding java.lang.String Enthält die contentTransferEncoding aus dem MIME-Abschnitt, der vom Anhangseintrag dargestellt wird.
contentId java.lang.String Enthält die contentId aus dem MIME-Abschnitt, der vom Anhangseintrag dargestellt wird.
messagePart java.lang.String Enthält den Namen des Nachrichtenabschnitts, der die Daten aus diesem Anhang enthält.

Layout des Nachrichtenhauptteils

Das Layout des Datenobjekts im Nachrichtenhauptteil (oder Body) wird von der WSDL des Service definiert. Der Typ des Datenobjekts wird aus der Nachrichtendefinition in der WSDL abgeleitet. Das Datenobjekt hat eine Eigenschaft für jeden Abschnitt in der Nachrichtendefinition. Das Layout jedes Nachrichtenabschnitts richtet sich nach der Konvention für die Zuordnung von XML-Schemata zu SDO. Nähere Informationen finden Sie im Artikel Codebeispiel für Web-Services.

Web-Service-Fehlernachrichten

Wenn die Nachricht eine Fehlernachricht ist, wird das Feld "messageType" (im Knoten "Info" des Graphen) auf "fault" gesetzt, und der Nachrichtenhauptteil hat die folgenden Eigenschaften:

Eigenschaftsname Eigenschaftstyp Eigenschaftsbeschreibung
faultcode javax.xml.namespace.QName Enthält den faultcode-Wert aus dem SOAP-Element Fault.
faultstring java.lang.String Enthält den faultstring-Wert aus dem SOAP-Element Fault.
faultactor java.lang.String Enthält den faultactor-Wert aus dem SOAP-Element Fault.
detail commonj.sdo.DataObject Enthält den Inhalt im unterordneten Element detail des Elements SOAPFault.
Anmerkung: Da in der Definition des Elements detail Platzhalterzeichen für Elemente und Attribute verwendet werden, enthält das Datenobjekt detail eine Sequenz. Nähere Informationen finden Sie im Artikel Codebeispiel für Web-Services.

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjy1111
Dateiname:rjy1111.html