Pregunta

Tengo en mi servicio web un simple servicio public boolean isAlive () . Lo definí en mi 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>

Cuando genero el esqueleto del Servicio, el método se genera pero no en el código auxiliar del cliente. ¿Hay algún problema en el WSDL? ¿Debo poner un wsdl: input incluso si el método no tiene argumentos (no puse todo el WSDL pero todos los demás métodos con un argumento '' request '' están bien generados)? Y si tengo que poner un wsdl: input, ¿cuál sería su mensaje?

Editar : después de validar el WSDL bajo Eclipse, tengo la advertencia WS-I: (BP2208) wsdl: la operación no fue una solicitud / respuesta o una operación unidireccional después de buscar, encontré una descripción aquí: http: //www.ws-i.org/Testing/Tools/2005/01/BP11_TAD_1-1.htm#BP2208 (parece que el ancla no funciona), así que supongo que el error es probablemente el wsdl faltante: entrada.

¿Fue útil?

Solución

Como dije en mi edición, el problema era la falta de wsdl: input. Al agregar

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

y

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

entonces mi problema original está resuelto ... conclusión, debería haber buscado más antes de preguntar por SO :(

Otros consejos

No estoy seguro de si este es su problema, pero la siguiente línea parece no tener una etiqueta de cierre:

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

Debería ser así:

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

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top