62

CXF 2.1を使用してwsdlからJavaコードを生成していますが、次のエラーが発生します。

WSDLToJava Error: Rpc/encoded wsdls are not supported in JAXWS 2.0

org.apache.cxf.tools.common.ToolException: Rpc/encoded wsdls are not supported in JAXWS 2.0
    at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.checkSupported(JAXWSDefinitionBuilder.java:141)
    at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.build(JAXWSDefinitionBuilder.java:87)
    at org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.build(JAXWSDefinitionBuilder.java:61)
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:127)
    at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:232)
    at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:83)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:103)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:173)

このエラーを修正するにはどうすればよいですか?以前のバージョンのCXFまたはその他のものを使用して修正できますか?

4

6 に答える 6

81

RPC/encoded は、SOAP オブジェクトが XML スキーマで定義される前の痕跡です。もはや広くサポートされていません。同じ時代のApache Axis 1.0を使用してスタブを生成する必要があります。

java org.apache.axis.wsdl.WSDL2Java http://someurl?WSDL 

-cp クラスパス パラメータには、次の jar または同等のものが必要です。

これにより、wsimport と同様のスタブが生成されます。

または、rpc/encoded を必要とするスキーマの部分を使用していない場合は、WSDL のコピーをダウンロードして、それらの部分をコメントアウトすることができます。次に、ローカル ファイルに対して wsimport を実行します。

WSDL を見ると、次の部分で rpc/encoded が使用されています。

<soap:body use="encoded"
           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
于 2009-01-06T03:14:21.670 に答える
6

これはCXFに役立つかもしれません。少なくともそれは私のために働いた。WSDL ファイルを編集し、SOAP-ENC のすべての参照を削除しArrayOfString、以下の方法でタイプを作成しました

<xsd:complexType name="ArrayOfString">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="String" type="xsd:string"/>
    </xsd:sequence>
</xsd:complexType>
于 2012-04-17T17:10:51.740 に答える
6

誰かが Maven を使用したい場合: (さらに、ここに WSDL バインディング スタイルに関するいくつかの情報)

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>axistools-maven-plugin</artifactId>
            <version>1.4</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                    <configuration>
                        <!-- Use your .wsdl location here-->
                        <sourceDirectory>${basedir}/src/main/resources/wsdl</sourceDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<!-- Here the libraries that you need to call the Axis WS client -->
<dependencies>
    <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis-jaxrpc</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>commons-discovery</groupId>
        <artifactId>commons-discovery</artifactId>
        <version>0.5</version>
    </dependency>
    <dependency>
        <groupId>axis</groupId>
        <artifactId>axis-wsdl4j</artifactId>
        <version>1.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis-saaj</artifactId>
        <version>1.4</version>
    </dependency>
    <!-- activation+mail: To stop Axis generating WARNING about "Attachment support being disabled" -->
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
    </dependency>
</dependencies>
于 2018-10-15T21:51:48.897 に答える
-4

抽出して WSDL2Java を実行するだけですか? 次のコマンドを使用します (もちろん、URL を置き換えます)。

java -cp axis.jar;commons-logging-1.0.4.jar;commons-discovery-0.2.jar;jaxrpc.jar;saaj.jar;wsdl4j-1.5.1.jar org.apache.axis.wsdl.WSDL2Java http://someURL?WSDL
于 2016-08-04T08:09:44.687 に答える