如何在intelij idea中生成wsdl客户端

时间:2016-02-27 10:12:02

标签: java intellij-idea jaxb wsdl

这是我可以生成的问题的最简化版本。

我有一个网络服务:

@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;
    }
}

这是在右键单击webserivce并从java生成wsdl代码时生成的xsd:

<?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 个答案:

答案 0 :(得分:0)

好吧发现问题似乎是每个web方法'METHODNAME'JAXB在模式中创建了一个名为METHODNAMEResponse的复杂类型

我的解决方案是在我的所有请求/回复中添加“DTO”。

也可以更改我的方法名称

el.parentNode.removeChild(el);