wsimport:生成Java SOAP客户端时的类自定义绑定

时间:2014-05-12 15:20:37

标签: java soap wsdl wsimport

我正在尝试使用'wsimport'为此WebService生成Java SOAP客户端:

https://mutalyzer.nl/services/?wsdl

我收到错误,因为有两个名为'transcriptInfo'和'TranscriptInfo'的节点:

  

[错误]具有相同名称“nl.mutalyzer._2_0.services.TranscriptInfo”的类/接口已在使用中。使用类自定义来解决此冲突。     https://mutalyzer.nl/services/?wsdl

的第2行

我使用wsimport参数-B-XautoNameResolution并且无效:

  

[ERROR]两个声明在ObjectFactory类中导致冲突。   第2行...

我正在尝试进行Class customizacion。我正在使用名为'nameCorrections.xml'的绑定文件,其中包含:

<jaxws:bindings
    wsdlLocation="https://mutalyzer.nl/services/?wsdl"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
    <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema/xs:complexType[@name='transcriptInfo']">
        <jaxws:class name="TranscriptInfoByNM"/>
    </jaxws:bindings>
</jaxws:bindings>

当我跑步时它不起作用:

  

wsimport -b nameCorrections.xml http ...(WDSL网址,我不能发布两个以上的链接)

我收到了这个错误:

  

[警告] s4s-elt-invalid-content.1:'transcriptInfo'的内容无效。元素'绑定'无效,错位或过于频繁发生。     线?的....   我究竟做错了什么?

1 个答案:

答案 0 :(得分:2)

我认为应该使用&#39; jaxb&#39;绑定代替&#39; jaxws&#39;那些。最后,我使用这个绑定文件使wsimport正常工作:

<jaxws:bindings
wsdlLocation="https://mutalyzer.nl/services/?wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema">
    <jaxb:bindings node="//xs:complexType[@name='transcriptInfo']">
        <jaxb:class name="TranscriptInfoByNM"/>
    </jaxb:bindings>
    <jaxb:bindings node="//xs:element[@name='transcriptInfo']">
        <jaxb:class name="ElementTranscriptInfoByNM"/>
    </jaxb:bindings>
</jaxws:bindings>