如何摆脱clientgen </integer>生成的WS客户端jar中的JAXBElement <integer>

时间:2012-09-28 10:03:04

标签: java-ee soap ant weblogic jax-ws

我按照clientgen ant任务

生成ws客户端
    <clientgen-contact
        wsdl="${wsdl-url-contact}"
        destFile="${output-file-contact}"
        packageName="${packageName}"
        type="JAXWS"
        overwrite="true"
    />

但结果罐中的某些类具有变量名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> 

1 个答案:

答案 0 :(得分: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