Question

J'ai dans mon service Web un simple service public boolean isAlive () . Je l'ai défini dans mon WSDL:

<wsdl:types>
    <xsd:element name="isAliveResponse" type="xsd:boolean">
    </xsd:element>
</wsdl:types>
<wsdl:message name="isAliveResponse">
    <wsdl:part element="ns:isAliveResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="myService">
    <wsdl:operation name="isAlive">
        <wsdl:output message="ns:isAliveResponse"/>
    </wsdl:operation>
</wsdl:portType>
<wsdl:binding name="myServiceSOAP" type="ns:myService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="isAlive">
    <soap:operation soapAction="http://myServiceURL/isAlive" />
    <wsdl:input>
        <soap:body use="literal" />
    </wsdl:input>
    <wsdl:output>
        <soap:body use="literal" />
    </wsdl:output>
</wsdl:operation>
</wsdl:binding>

Lorsque je génère le squelette de service, la méthode est générée mais pas dans le stub client. Y at-il un problème dans le WSDL? Devrais-je mettre un wsdl: input même si la méthode n'a pas d'arguments (je n'ai pas mis le WSDL entier mais toutes les autres méthodes avec un "request" arg sont bien générées)? Et si je dois mettre un wsdl: input, quel serait son message?

Modifier : après avoir validé le WSDL sous Eclipse, l'avertissement WS-I: (BP2208) wsdl: l'opération n'était pas une demande / réponse ou une opération à sens unique Après avoir cherché, j'ai trouvé une description ici: http: //www.ws-i.org/Testing/Tools/2005/01/BP11_TAD_1-1.htm#BP2208 (il semble que l'ancre ne fonctionne pas), donc je suppose que l'erreur est probablement le wsdl manquant: entrée.

Était-ce utile?

La solution

Comme je l’ai dit dans mon édition, le problème était l’entrée wsdl: manquante. En ajoutant

<wsdl:input message="ns:isAliveRequest" />

et

<wsdl:message name="isAliveRequest"></wsdl:message>

alors mon problème initial est résolu ... conclusion, j'aurais dû chercher plus par moi-même avant de demander à SO: (

Autres conseils

Je ne suis pas sûr qu'il s'agisse de votre problème, mais la ligne suivante ne semble pas avoir de balise de fermeture:

<wsdl:types>
    <xsd:element name="isAliveResponse" type="xsd:boolean">
</wsdl:types>

Cela devrait être comme ça:

<wsdl:types>
    <xsd:element name="isAliveResponse" type="xsd:boolean"/>
</wsdl:types>

J'espère que cela vous aidera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top