3

CXF(2.2.3)を使用してAmazon Web Service WSDLをコンパイルします(http://s3.amazonaws.com/ec2-downloads/2009-07-15.ec2.wsdl

しかし、以下のようなエラーが発生しました。

パラメータ:snapshotSetはメソッドdescribeSnapshotsにすでに存在しますが、タイプはcom.amazonaws.ec2.doc._2009_07_15.DescribeSnapshotsSetResponseTypeではなくcom.amazonaws.ec2.doc._2009_07_15.DescribeSnapshotsSetTypeです。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>

問題に対処するためにバインディングファイルを作成しました...しかし、それは仕事をしませんでした

   <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>

私のコードの何が問題になっていますか????

そして、svn .... svn co http://shrimpysprojects.googlecode.com/svn/trunk/smartcrc/AWSAgent/を使用して、私のプロジェクトをチェックアウトできます。

4

4 に答える 4

3

@PascalThiventが述べたように、CXFにはパラメーター-autoNameResolutionがあり、これを使用してみてください。これに遭遇したときにCXFによって与えられるメッセージは、残念ながらそれについて言及していません。

于 2015-02-11T15:54:00.813 に答える
1

バインディングファイルではxs:..... 、名前空間http://www.w3.org/2001/XMLSchemaxdsの参照を使用しますが、それが機能しない場合は、参照の名前をに変更してみてください(xsdちなみにxs 、ソリューションのおかげで機能します)

于 2010-08-31T08:17:46.827 に答える
0

この部分

<enableWrapperStyle>false</enableWrapperStyle>

する必要があります

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

于 2010-04-16T01:47:57.880 に答える
0

これを試している人のために:私はすべての修正を要約します:

<jaxws:bindings
xmlns:xs="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">

<jaxws:enableWrapperStyle>false</jaxws: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>

于 2018-10-09T14:38:06.523 に答える