Метод генерации WSDL без параметров - PullRequest
2 голосов
/ 13 сентября 2011

Я пытаюсь сгенерировать веб-сервис, используя файл WSDL.Есть один метод без входного параметра.Я сделал это следующим образом:

...
<types>
<xsd:schema targetNamespace="http://api.registration.company.com"
    xmlns:base="http://base.api.registration.company.com">
    ...
    <xsd:element name="RemoveURLRequest">
        <xsd:complexType>
            <xsd:sequence />
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="RemoveURLResponse" type="xsd:boolean" />
</xsd:schema>
</types>
...
<message name="RemoveURLRequest">
    <part name="RemoveURLRequest" element="tns:RemoveURLRequest" />
</message>
<message name="RemoveURLResponse">
    <part name="RemoveURLResponse" element="tns:RemoveURLResponse" />
</message>
...
<portType name="RegistrationService">
    ...
    <operation name="RemoveURL">
        <input message="tns:RemoveURLRequest" />
        <output message="tns:RemoveURLResponse" />
    </operation>
...
</portType>
<binding name="RegistrationServiceSOAP" type="tns:RegistrationService">
    <soap:binding style="document"
        transport="http://schemas.xmlsoap.org/soap/http" />
    ...
    <operation name="RemoveURL">
        <soap:operation soapAction=
            "http://api.registration.company.com/web/services/RegistrationService/RemoveURL"
                style="document" />
            <input>
                <soap:body parts="RemoveURLRequest" use="literal" />
            </input>
            <output>
                <soap:body parts="RemoveURLResponse" use="literal" />
            </output>
    </operation>
</binding>
<service name="RegistrationService">
    <port name="RegistrationServiceSOAP" binding="tns:RegistrationServiceSOAP">
        <soap:address location=
            "http://api.registration.company.com/web/services/RegistrationService" />
    </port>
</service>

Согласно этому WSDL, я ожидаю, что метод будет сгенерирован следующим образом:

public boolean removeURL();

Но я получаю это:

public boolean removeURL(RemoveURLRequest removeURLRequest);

Где RemoveURLRequest - пустой класс:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "RemoveURLRequest")
public class RemoveURLRequest {

}

Что я делаю не так?

Ответы [ 3 ]

1 голос
/ 19 июля 2013

Вы должны создать пустой комплексный тип и использовать его в качестве параметра. см. следующий пост, аналогичный вопросу: WSDL-тип для геттера без параметра .

1 голос
/ 14 сентября 2011

попробуйте что-нибудь подобное

без использования элемента part.

0 голосов
/ 14 сентября 2011

Jax-WS обычно генерирует такой код, когда типы сообщений / частей / схем заканчиваются ключевым словом «Запрос». Попробуйте без удаления, удалив часть «Запрос» имени. Это должно дать вам ожидаемые результаты

...