2016-07-06 7 views
0

Ich habe meinen Webservice für Tomcat bereitgestellt. dies in der WSDL-Datei ist die Bindungsteil:WSDL-Content, Binding: Eingabetyp "Literal" anstelle des Namens des Complextyps

<binding name="mywsPortBinding" type="tns:mywsInterface"> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> 
    <operation name="update"> 
     <soap:operation soapAction=""/> 
     <input> <soap:body use="literal"/> </input> 
     <output> <soap:body use="literal"/> </output> 
    </operation> 
</binding> 

Meine Frage: Warum sind die Ein- und Ausgangstypen sind gezeigt „wörtlichen“ zu sein? Als Antwort sendet dieser Webservice bestimmte xml-complextyped Daten nach einem angegebenen xsd zurück. Warum wird der Name des Copmlex-Typs nicht in der WSDL angezeigt?

Antwort

0

In der Bindung definiert "literal" nur den verwendeten Codierungsstil, der komplexe Typname wird in der Definition "wsdl: message" angezeigt, die in "wsdl: operation" in "wsdl: portType" verwendet wird.

Sie sollten so etwas haben. `

<xs:element name="update" type="tns:update"/> 
<xs:complexType name="update"> 
    <xs:sequence> 
     <xs:element name="arg0" type="xs:string"/> 
     <xs:element name="arg1" type="xs:string"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:element name="updateResponse" type="tns:updateResponse"/> 
<xs:complexType name="updateResponse"> 
    <xs:sequence> 
     <xs:element name="arg0" type="xs:string"/> 
    </xs:sequence> 
</xs:complexType> 

<wsdl:message name="update"> 
    <wsdl:part element="tns:update" name="parameters"/> 
</wsdl:message> 
<wsdl:message name="updateResponse"> 
    <wsdl:part element="tns:updateResponse" name="parameters"/> 
</wsdl:message> 



<wsdl:portType name="mywsInterface"> 
    <wsdl:operation name="update"> 
     <wsdl:input message="tns:update" name="update"/> 
     <wsdl:output message="tns:updateResponse" name="updateResponse"/> 
    </wsdl:operation> 
</wsdl:portType> 


<wsdl:binding name="mywsPortBinding" type="tns:mywsInterface"> 
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
    <wsdl:operation name="update"> 
     <soap:operation soapAction="" style="document"/> 
     <wsdl:input name="update"> 
      <soap:body use="literal"/> 
     </wsdl:input> 
     <wsdl:output name="updateResponse"> 
      <soap:body use="literal"/> 
     </wsdl:output> 
    </wsdl:operation> 
</wsdl:binding> 

` Sie können weitere Informationen und Beispiele finden here

0

Im Fall von ‚wörtliche‘, die abstrakten Typdefinitionen die konkreten Definitionen selbst werden (sie ‚wörtlichen‘ Definitionen sind). In diesem Fall können Sie einfach die Definitionen des XML-Schematyps überprüfen, um das konkrete Nachrichtenformat zu bestimmen. Zum Beispiel, wie dies die Operation für die Dokument-/wörtliche Bindung Blicke auf den Draht:

<SOAP-ENV:Envelope 
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
> 
    <SOAP-ENV:Body> 
     <m:Add xmlns:m="http://example.org/math/types/"> 
     <x>3.14159265358979</x> 
     <y>3.14159265358979</y> 
     </m:Add> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

Beachten Sie, dass die SOAP-Körper enthält nur eine Instanz des Element hinzufügen in dem definierten Schema, das ist Was macht Dokument/Literal so attraktiv? .

Referenz: Understanding WSDL

Verwandte Themen