В моем веб-сервисе есть простой сервис public boolean isAlive().
Я определил это в своем 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>
Когда я генерирую каркас службы, метод создается, но не в клиентской заглушке. Есть ли проблема в WSDL? Должен ли я помещать wsdl: input, даже если у метода нет аргументов (я не помещал весь WSDL, но все остальные методы с аргументом "request" созданы правильно)? И если мне нужно вставить wsdl: input, что это будет за сообщение?
Редактировать: После проверки WSDL в Eclipse у меня появляется предупреждение WS-I: (BP2208) wsdl:operation was not a request/response or one-way operation. После поиска я нашел описание здесь: http://www.ws-i.org/Testing/Tools/2005/01/BP11_TAD_1-1.htm#BP2208 (похоже, привязка не работает), поэтому я предполагаю, что ошибка, вероятно, связана с отсутствием wsdl: input.




Я не уверен, что это ваша проблема, но в следующей строке нет закрывающего тега:
<wsdl:types>
<xsd:element name = "isAliveResponse" type = "xsd:boolean">
</wsdl:types>
Должно получиться так:
<wsdl:types>
<xsd:element name = "isAliveResponse" type = "xsd:boolean"/>
</wsdl:types>
Надеюсь это поможет.
Как сказано в моем редактировании, проблема заключалась в отсутствии wsdl: input. Добавлением
<wsdl:input message = "ns:isAliveRequest" />
и
<wsdl:message name = "isAliveRequest"></wsdl:message>
тогда моя первоначальная проблема решена ... заключение, я должен был поискать больше сам, прежде чем спрашивать о SO :(
это была просто ошибка в моем копировании / вставке, но оригинал был правильным ... Я отредактировал вопрос, чтобы исправить это.