WSDL 不包含复杂类型定义
WSDL doesn't contain complex types definition
我目前正在用 javaEE 开发 jax-ws 服务。一切正常,我能够生成 soapUI 测试。但是当我访问 url 中的 wsdl 时,它不显示复杂类型定义。示例代码如下:
@WebService
public interface AccountWs {
@WebMethod
ActionStatus createCustomer(@WebParam(name = "customer") CustomerDto postData);
}
@WebService(serviceName = "AccountWs", endpointInterface = "org.xxx.api.ws.AccountWs")
public class AccountWsImpl implements AccountWs {
@Override
public ActionStatus createCustomer(CustomerDto postData) {
}
}
@XmlRootElement(name = "Customer")
@XmlAccessorType(XmlAccessType.FIELD)
public class CustomerDto {
private String code;
}
我的另一个问题是如何在生成的 wsdl 和其他属性(例如枚举枚举)中添加基数?上面的代码应该生成如下内容:
<xsd:complexType name="CustomerDto">
<xsd:sequence>
<xsd:element minOccurs="0" name="code" nillable="true" type="xsd:string"/>
...
找到了我的问题的答案。具有复杂类型的完整 xsd 确实是自动生成的,但与通常情况不同的是,它是写在导入 wsdl 文件的另一个文件上的,所以我的.所以在我的 CustomerWS?wsdl 文件中有一个导入语句:
<wsdl:import location="http://xxx/Customer?wsdl=Customer.wsdl" namespace="http://ws.api.meveo.org/">
</wsdl:import>
它包含完整的服务定义。
我目前正在用 javaEE 开发 jax-ws 服务。一切正常,我能够生成 soapUI 测试。但是当我访问 url 中的 wsdl 时,它不显示复杂类型定义。示例代码如下:
@WebService
public interface AccountWs {
@WebMethod
ActionStatus createCustomer(@WebParam(name = "customer") CustomerDto postData);
}
@WebService(serviceName = "AccountWs", endpointInterface = "org.xxx.api.ws.AccountWs")
public class AccountWsImpl implements AccountWs {
@Override
public ActionStatus createCustomer(CustomerDto postData) {
}
}
@XmlRootElement(name = "Customer")
@XmlAccessorType(XmlAccessType.FIELD)
public class CustomerDto {
private String code;
}
我的另一个问题是如何在生成的 wsdl 和其他属性(例如枚举枚举)中添加基数?上面的代码应该生成如下内容:
<xsd:complexType name="CustomerDto">
<xsd:sequence>
<xsd:element minOccurs="0" name="code" nillable="true" type="xsd:string"/>
...
找到了我的问题的答案。具有复杂类型的完整 xsd 确实是自动生成的,但与通常情况不同的是,它是写在导入 wsdl 文件的另一个文件上的,所以我的.所以在我的 CustomerWS?wsdl 文件中有一个导入语句:
<wsdl:import location="http://xxx/Customer?wsdl=Customer.wsdl" namespace="http://ws.api.meveo.org/">
</wsdl:import>
它包含完整的服务定义。