Beim Import aus WSDL werden mehrere Objekte generiert, möglicherweise bestehen jedoch gewisse Einschränkungen.
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.
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.
Die Ausgaberichtlinie für 'xsi:type' in der Nachricht wird auf 'Nie' gesetzt.
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.
<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.
<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:
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.
<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.