Pergunta

Eu tenho no meu serviço da web um simples public boolean isAlive() serviço. Eu defini isso no meu 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>

Quando eu gero o esqueleto de serviço, o método é gerado, mas não no stub do cliente. Existe um problema no WSDL? Devo colocar um WSDL: entrada, mesmo que o método não tenha argumentos (eu não coloquei todo o WSDL, mas todo o outro método com uma "solicitação" arg são bem gerados)? E se eu tiver que colocar um WSDL: entrada, o que seria sua mensagem?

Editar : Depois de validar o WSDL sob o Eclipse, tenho o aviso WS-I: (BP2208) wsdl:operation was not a request/response or one-way operation Depois de pesquisar, encontrei uma descrição aqui: http://www.ws-i.org/testing/tools/2005/01/bp11_tad_1-1.htm#bp2208 (Parece que a âncora não funciona), então acho que o erro é provavelmente o WSDL ausente: entrada.

Foi útil?

Solução

Como dito em minha edição, o problema foi o WSDL ausente: entrada. Adicionando

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

e

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

Então meu problema original é resolvido ... Conclusão, eu deveria ter procurado mais sozinho antes de perguntar para :(

Outras dicas

Não tenho certeza se esse é o seu problema, mas a linha a seguir parece não ter tag de fechamento:

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

Deve ser assim:

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

Espero que isto ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top