2016-02-27 6 views
2

это самая упрощенная версия моей проблемы, которую я мог бы сгенерировать.Как сгенерировать wsdl-клиент в идее intelij

Я получил веб-сервис:

@WebService() 
public class Service { 
    @WebMethod 
    public IsLoggedInResponse IsLoggedIn() { 
    return new IsLoggedInResponse(); 
    } 
} 

это класс я вернусь:

@XmlRootElement 
public class IsLoggedInResponse { 
    private boolean isLoggedIn; 

    public IsLoggedInResponse(boolean isLoggedIn) { 
     this.isLoggedIn = isLoggedIn; 
    } 

    public IsLoggedInResponse() { 
     // TODO Auto-generated constructor stub 
    } 

    @XmlElement 
    public boolean isLoggedIn() { 
     return isLoggedIn; 
    } 

    public void setLoggedIn(boolean isLoggedIn) { 
     this.isLoggedIn = isLoggedIn; 
    } 
} 

это XSD генерируется при нажатии правой кнопки мыши на webserivce и генерировать WSDL-код из Java:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<xs:schema version="1.0" targetNamespace="http://webservice.pubsale.com/" xmlns:tns="http://webservice.pubsale.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="IsLoggedIn" type="tns:IsLoggedIn"/> 

    <xs:element name="IsLoggedInResponse" type="tns:IsLoggedInResponse"/> 

    <xs:element name="IsLoggedInResponse" type="tns:IsLoggedInResponse"/> 

    <xs:complexType name="IsLoggedIn"> 
    <xs:sequence/> 
    </xs:complexType> 

    <xs:complexType name="IsLoggedInResponse"> 
    <xs:sequence> 
     <xs:element name="return" type="tns:isLoggedInResponse" minOccurs="0"/> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="isLoggedInResponse"> 
    <xs:sequence> 
     <xs:element name="loggedIn" type="xs:boolean"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

уведомление isLoggedInResponse создается дважды. Зачем? как я могу остановить его?

+1

Это, как представляется, вызвана тем, что перегруженный конструктор 'IsLoggedInResponse'. Вам нужны два конструктора? –

ответ

0

хорошо найдено проблема, кажется, для каждого WebMethod «имяМетода» JAXB создает в схеме сложного типа по имени METHODNAMEResponse

мое решение было добавить «DTO» для всех моих запросов/ответов.

может также изменить мой метод имя

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<xs:schema version="1.0" targetNamespace="http://webservice.pubsale.com/" xmlns:tns="http://webservice.pubsale.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="IsLoggedIn" type="tns:IsLoggedIn"/> 

    <xs:element name="IsLoggedInResponse" type="tns:IsLoggedInResponse"/> 

    <xs:element name="isLoggedInResponseDTO" type="tns:isLoggedInResponseDTO"/> 

    <xs:complexType name="IsLoggedIn"> 
    <xs:sequence/> 
    </xs:complexType> 

    <xs:complexType name="IsLoggedInResponse"> 
    <xs:sequence> 
     <xs:element name="return" type="tns:isLoggedInResponse" minOccurs="0"/> 
    </xs:sequence> 
    </xs:complexType> 

Смежные вопросы