2009-08-31 14 views
11

¿Hay alguna alternativa a Axis2? ¿O la forma de hacerlo funcionar (diferente enlace de datos, por ejemplo)?wsdl2java de Axis2 falla en RPC/servicios web de estilo codificados

Retrieving document at '...'. 
Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
     at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:271) 
     at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35) 
     at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24) 
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
     at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(SimpleDBExtension.java:53) 
     at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:224) 
     ... 2 more 
Caused by: java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(SimpleDBExtension.java:50) 
     ... 3 more 
Caused by: org.apache.axis2.schema.SchemaCompilationException: can not find type {http://schemas.xmlsoap.org/soap/encoding/}Array from the parent schema ...  at org.apache.axis2.schema.SchemaCompiler.copyMetaInfoHierarchy(SchemaCompiler.java:1296) 
     at org.apache.axis2.schema.SchemaCompiler.processComplexContent(SchemaCompiler.java:1258) 
     at org.apache.axis2.schema.SchemaCompiler.processContentModel(SchemaCompiler.java:1153) 
     at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1097) 
     at org.apache.axis2.schema.SchemaCompiler.processNamedComplexSchemaType(SchemaCompiler.java:1017) 
     at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:931) 
     at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:766) 
     at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:552) 
     at org.apache.axis2.schema.SchemaCompiler.process(SchemaCompiler.java:1991) 
     at org.apache.axis2.schema.SchemaCompiler.processParticle(SchemaCompiler.java:1874) 
     at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1081) 
     at org.apache.axis2.schema.SchemaCompiler.processNamedComplexSchemaType(SchemaCompiler.java:1017) 
     at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:931) 
     at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:766) 
     at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:552) 
     at org.apache.axis2.schema.SchemaCompiler.process(SchemaCompiler.java:1991) 
     at org.apache.axis2.schema.SchemaCompiler.processParticle(SchemaCompiler.java:1874) 
     at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompiler.java:1081) 
     at org.apache.axis2.schema.SchemaCompiler.processAnonymousComplexSchemaType(SchemaCompiler.java:980) 
     at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.java:934) 
     at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:592) 
     at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.java:563) 
     at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:370) 
     at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:280) 
     at org.apache.axis2.schema.ExtensionUtility.invoke(ExtensionUtility.java:103) 
     ... 8 more 

NOTA: Apache CXF falla, así :(

Respuesta

9

Sólo hay 3 opciones que he encontrado que se pueden utilizar en Java para el viejo estilo RPC/servicios Web codificadas:

1) implementación de referencia del Sol de JAX-RPC (wscompile)

2) de WebLogic clientgen (I utilizaron 8,1 versión)

3) Axis1 v1.4 wsdl2java

Originalmente utilizado Eje 1.4 para que y se notaba bastante pobre rendimiento en relativamente grandes respuestas de servicio (> 20 k) es decir, el tiempo de procesamiento del cliente aumentó más de dos veces para comparar petición HTTP plano sin necesidad de analizar. Y el tiempo crece si la respuesta aumenta. Tomó más de 30 segundos deserializar 1MB de gran tamaño.

cliente generado de SUN no funcionaba y no a petición con el mensaje:

unexpected element name: 
    expected=getSubscriberInfoReturn, 
    actual={ws.generated.api}getSubscriberInfoReturn 

He intentado usar clientgen 8.1 de WebLogic y código de cliente en comparación con 1.4 Eje generada rendimiento del cliente. Y Axis ganó la carrera. .. Por lo tanto, a pesar de cliente Axis está llevando a cabo no tan bueno en relativamente grandes respuestas sigue siendo la mejor opción que hay para los viejos RPC/servicios Web codificadas :(

+0

¿Podría mostrar cómo hacer esto con precisión? Cuando ejecuto 'java -classpath path/to/axis-1_4/lib/org.apache.axis.wsdl.WSDL2Java' obtuve un' Error: no se pudo encontrar o lo ad main class org.apache.axis.wsdl.WSDL2Java' –

+0

Hombre, hace 6 años :). Su error indica que tiene problemas con su classpath. –

1

Trate Eje 1, lo he usado por esta razón exacta

+0

Sí, usamos Eje 1 en el momento, podía comprender. Pero llegamos a problemas de rendimiento con eso :(. ¿Conoces alguna otra alternativa a Axis 1 o 2 o Apache CXF? –

+0

¿Has probado XFire o JbossWS? –

1

He tenido problemas con SimpleDataBinding en axis2 yo también.. ellos resueltos mediante el uso de la opción AxisDataBinding. ¿Cuál es el peso pesado poco más desde una perspectiva de codificación, pero funciona después de todo.

ADB in detail

Además, estoy de acuerdo con Robert, afirmando que axis1 también es una opción interesante.

0

No voy a entrar en profundidad con esto, pero ya que lo preguntas de alternativas:

Java 6 SE y Java EE 5 nave con la implementación Metro JAX-WS (referencia).

vive en el espacio de nombres javax.xml.ws.

red de desarrolladores de Sun tiene un artículo Introducing JAX-WS 2.0 With the Java SE 6 Platform que podría ser útil.

Una vez dicho todo esto, Eclipse no es muy JAX-WS friendly.

+0

Me gustaría utilizar JAX-WS, pero JAX-WS sí no es compatible con los servicios web de estilo codificado/rpc. Y no puedo cambiar el servicio web :(, pero necesito un cliente para eso. –

+0

¿Debo asumir que JAX-RPC tampoco funciona, entonces? – Powerlord

+0

He intentado usar JAX -Instalación de referencia de RPC y wscompile. Después de descargar todos los archivos jar que SUN no incluía en la distribución normal, logré generar el cliente, pero falló con la excepción: * Causado por: nombre de elemento inesperado: expected = getSubscriberInfoReturn, actual = {http : //ws.generated.api} getSubscriberInfoReturn –

0

Esta cuestión plantea si el tipo de jabón de codificación es viejo wsdl2java axis2 o wsimport no pueden entender el viejo estilo de codificación RPC a fin de utilizar el eje 1.Versión 4 o anterior del eje El inconveniente es que no encontrará wsdl2java como una herramienta en el antiguo eje , sino que lo encontrará como un archivo de clase en el archivo jar del eje , por lo que debe establecer manualmente el classpath y usar esa clase

D:\axis-1_4\lib>java -classpath \axis-1_4\lib* org.apache.axis.wsdl.WSDL2Java urwsdl

0

puede agregar siguiente parámetro de comando wsdl2java

-d xmlbeans 
Cuestiones relacionadas