WSDL不包含复杂类型定义

时间:2015-02-05 03:24:41

标签: java-ee soap jax-ws java-ee-6

我目前正在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"/>
        ...

1 个答案:

答案 0 :(得分:0)

找到我的问题的答案。具有复杂类型的完整xsd确实是自动生成的,但与通常不同的是,它写在wsdl文件中导入的另一个文件上,所以我的。所以在我的CustomerWS?wsdl文件中有一个import语句:

<wsdl:import location="http://xxx/Customer?wsdl=Customer.wsdl" namespace="http://ws.api.meveo.org/">
</wsdl:import>

它包含完整的服务定义。