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

В моем веб-сервисе есть простой сервис 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.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
2 830
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

Должно получиться так:

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

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

это была просто ошибка в моем копировании / вставке, но оригинал был правильным ... Я отредактировал вопрос, чтобы исправить это.

Vinze 25.11.2008 18:00
Ответ принят как подходящий

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

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

и

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

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

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