2009-01-05 32 views
51

estoy usando CXF 2.1 para generar el código de Java desde un WSDL, pero estoy consiguiendo el error siguiente:java: RPC/WSDL codificados no se admiten en JAXWS 2.0

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 puedo solucionar este problema error, ¿puedo usar una versión anterior de CXF o cualquier otra cosa para solucionarlo?

Respuesta

67

RPC/encoded es un vestigio anterior a los objetos SOAP se definieron con XML Schema. Ya no es not widely supported. Necesitarás generar los talones usando Apache Axis 1.0, que es de la misma época.

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

Necesitará los siguientes frascos o equivalentes en la ruta de clase -cp parámetro:

  • eje-1.4.jar
  • commons-logging-1.1.ja
  • Commons-descubrimiento- 0.2.jar
  • jaxrpc-1.1.jar
  • saaj-1.1.jar
  • WSDL4J-1.4.jar
  • activación-1.1.jar
  • correo-1.4.jar

Esto generará trozos 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 nos fijamos en el WSDL, los siguientes bits están utilizando RPC/codificado:

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

Gracias por su respuesta – tamilnad

+3

¿Hay alguna documentación disponible para este problema en Internet? – tamilnad

+1

En la última distribución de Eje 1.4 tengo diferentes nombres de tarros y mail-1.4.jar no está presente. No funciona como es. (Seguí el enlace de Axis 1.0) –

5

Puede ser que esto ayudaría con CXF. Alteast funcionó para mí. edité el archivo WSDL y eliminado todas las referencias de jabón-ENC y creé tipo ArrayOfString en muy por debajo de

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

Solía ​​Eje 1.4 mientras Chase Seibert sugerido en his answer, aunque el enlace de descarga dado en aquella respuesta no hace trabajo. 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.

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

  • axis.jar
  • Commons-descubrimiento-0.2.jar
  • commons-logging-1.0.4.jar
  • jaxrpc.jar
  • saaj.jar
  • WSDL4J-1.5.1.JAR

Ejecutar WSDL2Java usando el siguiente comando (en sustitución de 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á los archivos Java.

P.S .: Esto parece funcionar igualmente bien con Axis 1.2.1.

+3

Faltan dos clases, lo que da como resultado la desabilitación del soporte de Adjuntos. Para solucionar esto, obtenga mail.jar y activation.jar y agréguelos al comando. –

+3

Agregue mailapi.jar y activation.jar como @Marco Brochet declaró. Utilicé -classpath y reemplazado ";" con ":". java-classpath axis.jar: commons-logging-1.0.4.jar: commons-discovery-0.2.jar: jaxrpc.jar: saaj.jar: wsdl4j-1.5.1.jar: mailapi.jar: activation.jar org. apache.axis.wsdl.WSDL2Java https://api.clickatell.com/soap/webservice.php?WSDL –

-1

acaba de extraer y ejecutar WSDL2Java? usando el siguiente comando (en sustitución de 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 
Cuestiones relacionadas