CXF wsimport XJB Binding for Multiple Schemas添加XmlRootElement注释

时间:2016-01-21 17:11:55

标签: java jaxb cxf

我正在使用CXF创建合同第一个webservices类。 我有一个wsdl,它有一个xsds导入的负载。 这些xsds都在我的Java项目中的一个包中。

我创建了一个XJB文件,它可以完成我想要的工作,但是如果我要拥有很多我期待的xsds,它会占用太多代码来维护。任何解决方案都将不胜感激。

XJB:

    <jaxb:bindings schemaLocation="wsdl-xsd/contacts_input.xsd#REQUESTType"
    node="/xs:schema">
    <jaxb:bindings node="//xs:complexType[@name='REQUESTType']">
        <annox:annotate target="class">
            <annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement"
                name="REQUESTType" />
        </annox:annotate>
    </jaxb:bindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="wsdl-xsd/contacts_output.xsd#RESPONSEType"
    node="/xs:schema">
    <jaxb:bindings node="//xs:complexType[@name='RESPONSEType']">
        <annox:annotate target="class">
            <annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement"
                name="RESPONSEType" />
        </annox:annotate>
    </jaxb:bindings>
</jaxb:bindings>

WSDL:

<!-- Contact Services -->
        <xsd:import namespace="http://contacts_request.global_test.ws.test.com" schemaLocation="contacts_input.xsd"/>
        <xsd:import namespace="http://contacts_response.global_test.ws.test.com" schemaLocation="contacts_output.xsd"/>

1 个答案:

答案 0 :(得分:0)

最后,我能够通过使用简单的minded绑定来解决这个问题,该绑定为我的复杂元素提供了@XMLROOTELEMENT注释。我决定创建一个具有复杂类型REQUEST / RESPONSE类型的匿名根元素。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.0" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc">
<jaxb:globalBindings optionalProperty="wrapper">
    <xjc:simple />
</jaxb:globalBindings>