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>

它包含完整的服务定义。