私は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または他の何かを使用して修正できますか?
RPC/encodedは、以前からの名残ですSOAPオブジェクトはXMLスキーマで定義されていました。 広くサポートされていません もう。 を使用してスタブを生成する必要があります。 Apache Axis 1. 、これは同じ時代のものです。
Java org.Apache.axis.wsdl.WSDL2Java http://someurl?WSDL
-cp classpathパラメーターには、次のjarまたは同等のものが必要です。
これにより、wsimportと同様のスタブが生成されます。
または、rpc/encodedを必要とするスキーマの部分を使用していない場合は、WSDLのコピーをダウンロードして、それらのビットをコメントアウトできます。次に、ローカルファイルに対してwsimportを実行します。
WSDLを見ると、次のビットはrpc/encodedを使用しています。
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
Chase Seibertが his answer で示唆したようにAxis 1.4を使用しましたが、その回答で指定されたダウンロードリンクは機能しません。私が使用した代替ダウンロードリンクは、さまざまなライブラリを提供してくれました。以下は、コードを生成するために従った手順です。
http://Apache.is.co.za/axis/axis/Java/1.4/ に移動し、axis-bin-1_4.Zip。
展開すると、次のファイルが(特に)必要になります。
次のコマンドを使用して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
これにより、Javaファイルが生成されます。
P.S.:これは、Axis 1.2.1を使用しても同様に機能するようです。
これが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>
誰かが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>