Axis2 WSDL2Java: в сгенерированной заглушке отсутствует операция без аргументов

StackOverflow https://stackoverflow.com/questions/317362

Вопрос

В моем веб-сервисе есть простая публичная логическая служба 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: операция не была запросом / ответом или односторонней операцией после поиска я нашел описание здесь: http: //www.ws-i.org/Testing/Tools/2005/01/BP11_TAD_1-1.htm#BP2208 (кажется, якорь не работает), поэтому я предполагаю, что ошибка, вероятно, в отсутствующем wsdl: вход.

Это было полезно?

Решение

Как уже говорилось в моей редакции, проблема заключалась в отсутствии wsdl: input. Добавляя

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

и

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

тогда моя первоначальная проблема решена ... вывод, мне следовало поискать больше, прежде чем спрашивать о SO: (

Другие советы

Я не уверен, что это ваша проблема, но в следующей строке нет закрывающего тега:

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

Это должно быть так:

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

Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top