2009-09-25 75 views
3

我用CXF(2.2.3)編譯亞馬遜Web服務的WSDL(http://s3.amazonaws.com/ec2-downloads/2009-07-15.ec2.wsdl如何使用JAXWS/JAXB命名參數

,但得到如下錯誤。

參數:snapshotSet已經存在 爲方法describeSnapshots但 類型 com.amazonaws.ec2.doc._2009_07_15.DescribeSnapshotsSetType的 代替 com.amazonaws.ec2.doc._2009_07_15.DescribeSnapshotsSetResponseType的。 使用JAXWS/JAXB綁定自定義 來重命名參數。

衝突是由於下面的數據類型顯示:

<xs:complexType name="DescribeSnapshotsType"> 
       <xs:sequence> 
        <xs:element name="snapshotSet" type="tns:DescribeSnapshotsSetType"/> 
       </xs:sequence> 
      </xs:complexType> 

<xs:complexType name="DescribeSnapshotsResponseType"> 
       <xs:sequence> 
        <xs:element name="requestId" type="xs:string"/> 
        <xs:element name="snapshotSet" type="tns:DescribeSnapshotsSetResponseType"/> 
       </xs:sequence> 
      </xs:complexType> 

我創建一個綁定文件,試圖解決這個問題...但它didn`t做的工作

<jaxws:bindings 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    wsdlLocation="EC2_2009-07-15.wsdl" 
    xmlns="http://java.sun.com/xml/ns/jaxws" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"> 

    <enableWrapperStyle>false</enableWrapperStyle> 
    <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='http://ec2.amazonaws.com/doc/2009-07-15/']"> 
    <jxb:bindings node="xs:complexType[@name='tns:DescribeSnapshotsType']//xs:element[@name='snapshotSet']"> 
     <jxb:property name="snapshotRequestSet"/> 
    </jxb:bindings> 
    <jxb:bindings node="xs:complexType[@name='DescribeSnapshotsResponseType']//xs:element[@name='snapshotSet']"> 
     <jxb:property name="snapshotResponseSet"/> 
    </jxb:bindings>  
    </jaxws:bindings> 
</jaxws:bindings> 

,我用的命令,就像下面

<wsdlOptions> 
    <wsdlOption> 
      <wsdl>${basedir}/src/main/resources/wsdl/EC2_2009-07-15.wsdl</wsdl> 
      <extraargs> 
      <extraarg>-b</extraarg> 
      <extraarg>${basedir}/src/main/resources/wsdl/Bindings_EC2_2009-07-15.xml</extraarg> 
      </extraargs> 
    </wsdlOption> 
</wsdlOptions> 

什麼是錯的智慧h我的代碼????

,您可以通過使用SVN檢查出我的項目.... SVN共同http://shrimpysprojects.googlecode.com/svn/trunk/smartcrc/AWSAgent/

+2

奇怪的是,wsdl2java標誌'-autoNameResolution'應該自動解決衝突...順便說一句,你的自定義綁定有什麼問題?你有沒有得到同樣的錯誤? – 2009-10-01 22:46:58

回答

0

這部分

<enableWrapperStyle>false</enableWrapperStyle>

應該

<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>

1

在你綁定文件,您使用xs:.....但是引用命名空間http://www.w3.org/2001/XMLSchemaxds所以,如果它不工作嘗試參考xsd重命名爲xs (感謝解決方案的方式通過,它的工作原理)

0

正如@PascalThivent提及,CXF有一個參數,-autoNameResolution,你應該嘗試使用。 CXF在遇到這個消息時給出的消息,遺憾的是沒有提到它。