3

我正在通过遵循clientgen ant 任务生成 ws 客户端

    <clientgen-contact
        wsdl="${wsdl-url-contact}"
        destFile="${output-file-contact}"
        packageName="${packageName}"
        type="JAXWS"
        overwrite="true"
    />

但是生成的 jar 中的某些类具有变量名JAXBElement<Integer>而不是Integer.

我怎样才能避免这种情况而得到Integer呢?


解决方案

正如Paulius Matulionis所说,解决方案是创建一个绑定文件。您可以将绑定文件参数提供给 clientgen,如下所示:

    <clientgen-contact
        wsdl="${wsdl-url-contact}"
        destFile="${output-file-contact}"
        packageName="${packageName}"
        type="JAXWS"
        overwrite="true"  
    >
        <binding file="${bindingFilePath}"/>
    </clientgen-contact>

Binding.xml 完整内容:

<jaxb:bindings version="2.1" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
   <jaxb:globalBindings generateElementProperty="false"/> 
</jaxb:bindings> 
4

1 回答 1

3

您必须创建JAXB绑定文件并在生成客户端时包含它。该文件应如下所示:

<jaxb:bindings version="2.0"
               xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
        <jaxb:globalBindings generateElementProperty="false"/>
</jaxb:bindings>

标志generateElementProperty设置为 false ,它将阻止生成JAXBElement<Integer>而不是Integer.

于 2012-09-28T12:31:27.550 回答