sábado, febrero 03, 2007

Axis2 y servicios web




La verdad es que se puede decir que he llegado un poco tarde al mundo de los servicios web, por lo menos lo suficiente para haberme encontrado a Apache Axis 2 donde antes estuvo Axis 1. Dicen los de Apache que Axis 2 es una reescritura desde cero del motor más famoso de servicios web en el mundo de java. Parece ser que han conseguido mejorar la velocidad además de darle unas cuantas funcionalidades extras a Axis 2, como puede ser el asincronismo que tan de moda se ha puesto.

Yo hasta ahora no he sacado partida al asincronismo, pero sí he hecho unos cuantos servicios web con esta tecnología. Como no puede ser de otra manera he usado Springframework acompañándola (sobra decir que la unión de ambas tecnologías está soportado en la versión 1.1 de Apache Axis 2 de manera fácil y elegante). Además me he dejado llevar por mi herramienta favorita y he mavenizado el proyecto con Apache Maven 2.0.4.

La verdad es que no se puede decir que todo resulta fácil y cómodo. Yo he tenido que pelearme bastante con el tema de la configuración de los plugins en Maven para conseguir hacer funcionar tanto el java2wsdl como el wsdl2java, pero una vez conseguido el propósito, todo funciona a la perfección.

A la hora de integrar Spring en Axis 2, dan dos soluciones al problema: levantar el contexto de aplicación de spring desde el propio servlet o hacerlo dentro de lo que se llama un archivo de axis 2 (aar). En el primer caso el contexto de aplicación puede ser compartido por todos los servicios web alojados en la misma aplicación web de Apache Axis 2. Mientras que en el segundo caso no sería así, y cada servicio web dispondría de su propio contexto de aplicación de Spring.

La verdad es que a mi me gusta más la segunda manera de hacer las cosas, puesto que permite aislar mejor las cosas haciendo que cada servicio web sea independiente a la vez que autónomo. Sí es cierto que la segunda manera te obliga a hacer más cosas (como tener cuidado con los classpath ya que parece ser que hay problemillas al respecto, un jar que esté en el classpath de axis2 no verá un jar que esté en el classpath del archivo aar).

1 comentario:

Duyal servicios web dijo...

Excelente la información que nos muestras en tu blog, ayuda a obtener más conocimientos sobre este tema.