Cliente de servicio web Java (mejor forma)


82

Tengo un WSDL de terceros, necesito escribir código en Java para que un cliente de servicio web invoque las operaciones en el WSDL de terceros. En este momento, he generado el código auxiliar del cliente usando la herramienta WSDL2JAVA de Axis y usé XMLbeans para el enlace de datos.

  1. ¿Cuál es el mejor enfoque para hacer este JAVA?
  2. Leí sobre SAAJ, ¿parece que será un nivel de enfoque más granular?
  3. ¿Hay alguna otra forma que no sea usando la herramienta WSDL2Java, para generar el código? Quizás wsimporten otra opción. ¿Cuáles son los pros y los contras?
  4. ¿Alguien puede enviar los enlaces para algunos buenos tutoriales sobre estos temas?
  5. ¿Cuáles son las opciones que necesitamos usar al generar el código usando WSDL2Java?

Usé algunas de las cosas básicas inicialmente. Ahora tengo estas opciones

C:\axis2-1.5.1\bin>wsdl2java -uri  mywsdlurl  -o client -p somepackage -d xmlbeans -s -t -ssi

Respuestas:


163

¿Cuál es el mejor enfoque para hacer este JAVA?

Personalmente, NO usaría Axis 2, incluso solo para el desarrollo del lado del cliente. He aquí por qué me mantengo alejado de él:

  1. No me gusta su arquitectura y odio su modelo de implementación contraproducente.
  2. Me parece que es un proyecto de baja calidad.
  3. No me gusta su desempeño (vea este punto de referencia contra JAX-WS RI ).
  4. Siempre es una pesadilla configurar dependencias (yo uso Maven y siempre tengo que luchar con la gran cantidad de dependencias) (ver el n. ° 2)
  5. Axis fue una mierda y Axis2 no es mejor. No, esta no es una opinión personal, hay consenso.
  6. Sufrí una vez, nunca más.

La única razón por la que Axis todavía existe es IMO porque se usa en Eclipse desde hace siglos. Gracias a Dios, esto se ha solucionado en Eclipse Helios y espero que Axis2 finalmente muera. Simplemente hay pilas mucho mejores.

Leí sobre SAAJ, ¿parece que será un nivel de enfoque más granular?

¿Hacer que?

¿Hay alguna otra forma que no sea usando la herramienta WSDL2Java, para generar el código? Tal vez lo importamos en otra opción. ¿Cuáles son los pros y los contras?

¡Si! Prefiera una pila JAX-WS como CXF o JAX-WS RI (también puede leer acerca de Metro, Metro = JAX-WS RI + WSIT ), son más elegantes, más simples y más fáciles de usar. En su caso, solo usaría JAX-WS RI que está incluido en Java 6 y por lo tanto wsimport.

¿Alguien puede enviar los enlaces para algunos buenos tutoriales sobre estos temas?

Ese es otro profesional, hay muchos tutoriales (de buena calidad) para JAX-WS, consulte, por ejemplo:

¿Cuáles son las opciones que necesitamos usar al generar el código usando WSDL2Java?

No hay opciones, use wsimport:)

Ver también

Preguntas relacionadas


4
Increíble trabajo, gracias. ¿Podría también hacer que WSIT sea un enlace a alguna descripción del mismo (por ejemplo, para download.oracle.com/docs/cd/E17802_01/webservices/webservices/… )
dma_k

@dma_k Listo, agregó un enlace al proyecto WSIT (el que publicaste también es bueno, por lo que los lectores tienen ambos).
Pascal Thivent

1
Te di un +1 en esto hace mucho tiempo sin siquiera seguir todos los enlaces. ¡Hombre vivo, ese bileblog lo golpea en la nariz! :) Nuevamente, gracias por esto.
javamonkey79

1
+1 para JAX-WS. Perdido muchos días con Axis2 ... un desastre total (por no hablar de un montón de dependencias)
marcolopes

1
Hola Pascal, el vínculo de Glen Mazza está roto ahora.
Adeel Ansari

8

He tenido un buen éxito con Spring WS para el cliente final de una aplicación de servicio web; consulte http://static.springsource.org/spring-ws/sites/1.5/reference/html/client.html

Mi proyecto usa una combinación de:

  • XMLBeans (generado a partir de un trabajo simple de Maven utilizando el complemento xmlbeans-maven-plugin)

  • Spring WS: el uso de marshalSendAndReceive () reduce el código a una línea para enviar y recibir

  • algunos Dozer: mapeo de XMLBeans complejos a beans simples para la GUI del cliente



Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.