intellij idea中如何生成wsdl客户端
how to generate wsdl client in intelij idea
这是我能生成的问题的最简化版本。
我有一个网络服务:
@WebService()
public class Service {
@WebMethod
public IsLoggedInResponse IsLoggedIn() {
return new IsLoggedInResponse();
}
}
这是class我return:
@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 并从 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 被创建了两次。为什么?我该如何阻止它?
好的,每个 webmethod 似乎都有问题 'METHODNAME' JAXB 在模式中创建了一个名为 METHODNAMEResponse 的复杂类型
我的解决方案是将 "DTO" 添加到我所有的 requests/responses。
也可以更改我的方法名称
<?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>
这是我能生成的问题的最简化版本。
我有一个网络服务:
@WebService()
public class Service {
@WebMethod
public IsLoggedInResponse IsLoggedIn() {
return new IsLoggedInResponse();
}
}
这是class我return:
@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 并从 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 被创建了两次。为什么?我该如何阻止它?
好的,每个 webmethod 似乎都有问题 'METHODNAME' JAXB 在模式中创建了一个名为 METHODNAMEResponse 的复杂类型
我的解决方案是将 "DTO" 添加到我所有的 requests/responses。
也可以更改我的方法名称
<?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>