WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Nachrichtengruppen: Aus WSDL importieren: generierte Objekte und Einschränkungen

Beim Import aus WSDL werden mehrere Objekte generiert, möglicherweise bestehen jedoch gewisse Einschränkungen.

Generierte Objekte

Dateien, die beim Import über die Befehlszeile kopiert werden
Der Befehl mqsicreatemsgdefsfromwsdl kopiert die benötigten WSDL-Dateien in den Arbeitsbereich, bevor der Import ausgeführt wird. Dabei handelt es sich um die WSDL-Dateien der höchsten Ebene und alle Importe, die mithilfe einer relativen Position ermittelt werden. Die Dateien werden in den Ordner 'importFiles' unter der angegebenen Anwendung, Bibliothek oder Nachrichtengruppe kopiert.
Berichtsdatei

Das WSDL-Importprogramm hängt das Ergebnis der Importoperation an eine Berichtsdatei an, wobei alle bei dieser Operation aufgetretenen Fehler aufgelistet werden. Die Berichtsdatei hat den Namen Anwendung/Bibliothek.wsdl.report.txt oder Nachrichtengruppe.wsdl.report.txt.

SOAP-Nachrichtdefinitionen

Die erforderlichen SOAP-.xsds-Dateien werden der Anwendung bzw. Bibliothek hinzugefügt. Bei Verwendung einer Nachrichtengruppe werden dieser .mxsds-Dateien hinzugefügt.

Um SOAP-1.2-Instanzdokumente zu analysieren, müssen Sie mithilfe des Assistenten 'Nachrichtendefinitionsdatei' unter Auswahl von IBM eigene Nachricht die SOAP-1.1.-Definitionen manuell entfernen und die SOAP-1.2-Definitionen importieren.

Enthält die Anwendung, Bibliothek oder die Nachrichtengruppe TDS- oder CWF-Schichten, erhalten Sie zu den importierten SOAP-Definitionen unter Umständen eine Reihe von Warnungen. Die meisten davon können ignoriert werden, Sie sollten jedoch die zulässigen Werte für Boolesche Attribute beachten. In SOAP 1.1 hat ein Boolescher Wert den Wert 1 oder 0, während die Werte in SOAP 1.2 'true' (wahr) und 'false' (falsch) lauten. Die XML-Darstellung boolescher Werte für eine Anwendung, Bibliothek oder eine Nachrichtengruppe ist in den physischen Eigenschaften für das physische XML-Format angegeben und muss gegebenenfalls entsprechend gesetzt werden.

Nachrichtenstammelemente oder Nachrichtendefinitionsdateien
Bei Verwendung einer Nachrichtengruppe werden Nachrichtendefinitionen erstellt. Bei Verwendung einer Anwendung oder Bibliothek hingegen werden Nachrichtenstammelemente erstellt. Die Namen anderer Nachrichtenstammelemente oder Nachrichtendefinitionsdateien werden im Format Eingabedateiname.xsd (bei Anwendungen und Bibliotheken) oder Eingabedateiname.mxsd (bei Nachrichtengruppen) erstellt; ihr Inhalt hängt vom WSDL-Stil ab.
Dokumentformat (style=document)
WSDL-Nachrichtenteile für style="document" (dazu gehören die SOAP-Elemente 'header', 'fault' und 'headerfault) verweisen auf ein in XML Schema definiertes Element. Dieses Element wird als globales Element und Brokernachricht in die .xsd- oder .mxsd-Datei importiert.

Die Ausgaberichtlinie für 'xsi:type' in der Nachricht wird auf 'Nie' gesetzt.

RPC-Format (style=rpc)
WSDL-Nachrichtenteile für style="rpc" (und ausschließlich diejenigen, die dem SOAP-Hauptteil zugeordnet sind) verweisen auf einen in XML Schema definierten Typ. In diesem Fall werden Ein- und Ausgabenachrichten wie in der folgenden Tabelle angegeben erstellt.
  Eine Eingabenachricht Eine Ausgabenachricht
Abgeleitet von Dem untergeordneten Element 'wsdl:input' (sofern vorhanden) der WSDL-Operation sowie der WSDL-Nachricht und den Nachrichtenteilen, die von ihm angegeben werden Dem untergeordneten Element 'wsdl:output' (sofern vorhanden) der WSDL-Operation und der WSDL-Nachricht und den Nachrichtenteilen, die von ihm angegeben werden
Name des Elements Der Wert des Namensattributs im WSDL-Element 'operation' Der Wert des Namensattributs im WSDL-Element 'operation' mit dem Suffix 'Response'
Namespace des Elements Der Wert des Namespaceattributs im entsprechenden soap:body-Element Der Wert des Namespaceattributs im entsprechenden soap:body-Element

Jede Nachricht ist ein lokaler komplexer Typ, bestehend aus einer Folge von Elementen. Der Name jedes Elements entspricht dem Wert des Namensattributs (name) in den WSDL-Teilen (part-Elementen) der Nachricht, die entweder durch das input- oder output-Element identifiziert wird. Diese Elemente besitzen keinen Namespace (die zugrunde liegende Schemadarstellung enthält form="unqualified") und werden lokal Bereichen zugeordnet, um Namenskollisionen zu vermeiden. Der Typ dieses lokalen Elements entspricht dem XML-Schematyp, auf den vom Attribut 'type' des entsprechenden part-Elements verwiesen wird. Der Typ im WSDL-Schema ist ein globaler Typ.

Wurde in der WSDL-Definition use="encoded" für das Element 'soap:body' definiert, enthält die Nachrichtendefinition einen Verweis auf die Attributgruppe 'encodingStyle' im SOAP-ENV-Namespace und die Ausgaberichtlinie für xsi:type-Attribute ist in der Nachricht auf 'SOAP-Codierungsregeln befolgen' gesetzt. Andernfalls wird die Ausgaberichtlinie für xsi:type-Attribute auf 'Nie' gesetzt.

Mithilfe von .NET generierte WSDLs
In einigen Fällen enthalten WSDL-Dateien, die unter Verwendung von .NET generiert wurden, Verweise auf das Schema selbst; Beispiel:
<xsd:complexType>
		<xsd:sequence>
						<xsd:element ref="s:schema"/>
		</xsd:sequence>
</xsd:complexType>
Damit solche WSDL-Dateien ohne Gültigkeitsfehler in das WebSphere Message Broker Toolkit importiert werden können, muss dem Namespace des Schemas manuell eine Namespaceimportanweisung hinzugefügt werden; Beispiel:
<xsd:import namespace="http://www.w3.org/2001/XMLSchema"/>

Fügen Sie die Importanweisung zunächst in das schema-Element ein und stellen Sie sicher, dass es vor komplexen Typen oder Elementdefinitionen steht. Überprüfen Sie die WSDL erneut, indem Sie mit der rechten Maustaste auf die aktualisierte WSDL klicken und anschließend auf Auswerten klicken.

Einschränkungen

Einschränkungen im Zusammenhang mit dem Import von WSDL-Definitionen gelten dann, wenn die WSDL-Definitionen nicht WS-I-konform sind.
SOAP-Arrays
Mit einer WSDL-1.1-Definition kann ein SOAP-Array definiert werden (gilt nur für den WSDL-Stil 'rpc-encoded' und ist nicht WS-I-konform):
    <xsd:complexType name="t">
          <xsd:complexContent>
            <xsd:restriction base="SOAP-ENC:Array">
              <xsd:sequence>
                <xsd:element name="item" type="string" maxOccurs="unbounded"/>
              </xsd:sequence>
              <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]"/>
            </xsd:restriction>
          </xsd:complexContent>
    </xsd:complexType>

Nicht jede SOAP-Array-Syntax wird in vollem Umfang unterstützt. Auch wenn bei der Analyse eine hilfreiche Baumstruktur erstellt wird (und beim Schreiben auch serialisiert werden kann), gelten die folgenden Einschränkungen:

  • Das Modell berücksichtigt das Attribut SOAP-ENC:arrayType nicht.
  • Das Modell für teilweise übertragene Arrays berücksichtigt nicht das Attribut SOAP-ENC:offset.

    Auf das erste Element in einem Array, für das 'offset[2]' angegeben ist, muss in ESQL nicht als 'InputRoot.MRM.array.item[3]', sondern als 'InputRoot.MRM.array.item[1]' zugegriffen werden.

  • Das Modell für mehrdimensionale Arrays verflacht die Darstellung zu einem eindimensionalen Array. Beispielsweise wird auf ein zweidimensionales Array in ESQL nicht als InputRoot.MRM.array.item[x][y], sondern als InputRoot.MRM.array.item[i] zugegriffen, wobei der Index i entsprechend berechnet werden muss.
Anonyme Elemente
Der WSDL-Auszug oben beschreibt ein SOAP-Instanzdokument in folgender Form:
    <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]">
       <item xsi:type="xsd:string">Eine allgemeine Textzeichenfolge</item>
       <item xsi:type="xsd:token">Eine Einschränkung des Zeichenfolgetyps</item>
       <item xsi:type="xsd:Name">Eine Einschränkung des Token-Typs</item>
    </SOAP-ENC:Array>

Das Brokermodell handhabt dieses Dokument wie erwartet, doch können im SOAP-Codierungsarray Elemente auch type-Elemente aus dem SOAP-Codierungsnamespace verwenden. Das heißt, eine Anwendung, die dieselbe WSDL-Definition verwendet, erstellt möglicherweise ein Instanzdokument in folgender Form:

    <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]">
       <SOAP-ENC:string>Eine allgemeine Textzeichenfolge</SOAP-ENC:string>
       <SOAP-ENC:token>Eine Einschränkung des Zeichenfolgetyps</SOAP-ENC:token>
       <SOAP-ENC:Name>Eine Einschränkung des Token-Typs</ SOAP-ENC:Name>
    </SOAP-ENC:Array>

In diesem Fall müssen Sie das Brokermodell, das durch Import der WSDL erstellt wird, manuell ändern, wenn es vom Parser nicht als selbstdefiniertes Element gehandhabt werden soll.

Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:21:06


ReferenzthemaReferenzthema | Version 8.0.0.5 | ad30560_