CXF wsdl2java - 生成没有包装器的列表(静态内部类)

时间:2014-08-04 17:04:05

标签: java web-services xsd cxf wsdl2java

我正在尝试制作一个ws,而且我对cxf生成的类有小问题。

每当我尝试创建列表时,它都会生成为静态内部类(包装器)的字段。

例如

<xs:complexType name="customer">
    <xs:sequence>
        <xs:element name="customerId" type="xs:int"/>
        <xs:element name="orders">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="order" type="tns:order" maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>

<xs:complexType name="order">
    <xs:sequence>
        <xs:element name="id" type="xs:long" />
        <xs:element name="name" type="xs:string" />
    </xs:sequence>
</xs:complexType>

会生成

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "customer", propOrder = {
"customerId",
"orders"
})
public class Customer {

    protected int customerId;
    @XmlElement(required = true)
    protected Customer.Orders orders;
...
    public static class Orders {

        @XmlElement(required = true)
        protected List<Order> order;
...

我希望得到的是

public class Customer {

    protected int customerId;
    protected List<Order> orders;
...

此示例类型的xml应如下所示:

<customer>
    ...
    <orders>
        <order>
            <id></id>
            <name></name>
        </order>
        <order>
            <id></id>
            <name></name>
        </order>
        ...
    </orders>
</customer>

根据我的理解,在执行java2wsdl时可以使用@XmlRootElement,但有没有办法从wsdl生成这种类型的类?

目前正在调用customer.getOrders()。getOrder()会返回一个有点违反直觉的订单列表

1 个答案:

答案 0 :(得分:0)

遇到同样的问题(CXF wsdl2java)并使用jaxb-xew-plugin解决了这个问题。