组合JAXWS和JAXB绑定

组合JAXWS和JAXB绑定,jaxb,jax-ws,jaxb2,maven-jaxb2-plugin,jax-ws-customization,Jaxb,Jax Ws,Jaxb2,Maven Jaxb2 Plugin,Jax Ws Customization,我正在使用jaxws maven插件定制由WSDL文件生成的JAXB bean。为了自定义它们,我使用了一个绑定文件 基本上我想要: 防止JAXBElement的生成 自定义一些元素名称 我的绑定文件是: <jaxws:bindings version="2.1" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xj

我正在使用jaxws maven插件定制由WSDL文件生成的JAXB bean。为了自定义它们,我使用了一个绑定文件

基本上我想要:

  • 防止JAXBElement的生成
  • 自定义一些元素名称
我的绑定文件是:

<jaxws:bindings version="2.1"
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
           xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">

<!--Element 1-->
<jaxb:globalBindings generateElementProperty="false">
    <xjc:simple/>
</jaxb:globalBindings>

 <!--Element 2-->
<jaxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" node="//xs:complexType[@name='WorkDocuments']/xs:choice">
    <jaxb:property name="documents"/>
</jaxb:bindings>

问题是,如果我使用
jaxws:bindings
作为根元素,那么元素1将不起作用,并生成JAXBElement

如果我使用
jaxb:bindings
作为根元素,那么元素1可以工作,但是元素2不能工作,因为xpath表达式与任何元素都不匹配


如何更正绑定文件以使这两个元素同时工作?

我找到了一个解决方案,将
用作根元素,然后将
全局绑定
放在
jaxws:bindings
中:

即:

<jaxws:bindings version="2.1"
            xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
            xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">

<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='yourNamespace']">
    <jaxb:globalBindings generateElementProperty="false">
    </jaxb:globalBindings>       
</jaxws:bindings>