tutorial services jax con java jax-ws
mail-1.4.jarwsdl4j-1.4.jarsaaj-1.1.jarjaxrpc-1.1.jaraxis-1.4.jar

services - jax-ws java 8



java: los wsdls codificados en Rpc/no son compatibles con JAXWS 2.0 (5)

solo extraer y ejecutar WSDL2Java? usando el siguiente comando (reemplazando la URL, por supuesto):

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

Estoy usando CXF 2.1 para generar código java desde un wsdl, pero recibo el siguiente error:

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)

¿Cómo soluciono este error? ¿Puedo usar una versión anterior de CXF o cualquier otra cosa para solucionarlo?


RPC / codificado es un vestigio de antes de que los objetos SOAP se definieran con XML Schema. Ya no es ampliamente compatible . Necesitarás generar los stubs usando Apache Axis 1.0 , que es de la misma época.

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

Necesitará los siguientes jar o equivalentes en el parámetro parac classpath -cp:

  • axis-1.4.jar
  • commons-logging-1.1.ja
  • commons-discovery-0.2.jar
  • jaxrpc-1.1.jar
  • saaj-1.1.jar
  • wsdl4j-1.4.jar
  • activation-1.1.jar
  • mail-1.4.jar

Esto generará stubs similares a wsimport.

Alternativamente , si no está utilizando las partes del esquema que requieren rpc / encoded, puede descargar una copia del WSDL y comentar esos bits. Luego ejecute wsimport contra el archivo local.

Si miras el WSDL, los siguientes bits usan rpc / codificado:

<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">


Puede ser que esto ayude con CXF. Alteast funcionó para mí. Edité el archivo WSDL y ArrayOfString todas las referencias de SOAP-ENC y creé el tipo ArrayOfString a continuación.

<xsd:complexType name="ArrayOfString"> <xsd:sequence> <xsd:element minOccurs="0" maxOccurs="unbounded" name="String" type="xsd:string"/> </xsd:sequence> </xsd:complexType>


Utilicé Axis 1.4 como Chase Seibert sugirió en su respuesta , aunque el enlace de descarga dado en esa respuesta no funciona. El enlace de descarga alternativo que utilicé me dio diferentes bibliotecas. A continuación se muestran los pasos que seguí para generar mi código.

Vaya a http://apache.is.co.za/axis/axis/java/1.4/ y descargue axis-bin-1_4.zip .

Extraelo, y debe tener los siguientes archivos (entre otros):

  • axis.jar
  • commons-discovery-0.2.jar
  • commons-logging-1.0.4.jar
  • jaxrpc.jar
  • saaj.jar
  • wsdl4j-1.5.1.jar

Ejecute WSDL2Java usando el siguiente comando (reemplazando la URL, por supuesto):

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

Esto generará tus archivos Java.

PD: Esto parece funcionar igualmente bien usando Axis 1.2.1.