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.
La respuesta de Chase Serbeit funcionó para mí. Y aquí hay enlaces que he encontrado para toda la biblioteca que mencionó: