多个模式的 CXF wsimport XJB 绑定添加 XmlRootElement 注释

CXF wsimport XJB Binding for Multiple Schemas add XmlRootElement annotation

我正在使用 CXF 创建合同优先 Web 服务 类。 我有一个 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"/>

最后,我能够通过使用简单的绑定来解决这个问题,该绑定为我的复杂元素提供了@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>