La web de consultoriajava.com, la web de los auténticos expertos en Java

Ir a inicio

Objetivos

Know-How Java

Know-How de Negocio

Artículos

Contactar


Servicios de consultoria

Análisis y Diseño

Aportación de Know-How

Arquitectura Java EE

Auditoria de Proyectos

Formación experta

Gestión de proyectos

Preparación de equipos

Refactoring de sistemas

Reingeniería de proyectos

Selección de personal



Herramientas Java

Axis y Axis2, contenedores de Web Services



Origen de AXIS2:

Axis2 es la versión mejorada del contenedor de Web Services AXIS. El proyecto ha evolucionado independientemente de la primera versión debido a que implementa especificaciones diferentes.

AXIS en su primera versión implementaba JAX-RPC y proveía un contenedor relativamente versátil para su epoca de lanzamiento y sobre todo de propagación (entre 2004 y 2007).

AXIS originalmente se convirtió en uno de los contenedores más extendidos para implantar soluciones basadas en Web Services o que proveían acceso a sistemas preexistentes mediante Web Services SOAP.

Tan potente era el resultado de los Web Services SOAP implantados sobre AXIS que muchos Web Services que funcionan sobre Webpshere o Weblogic emplean AXIS. Este tipo de soluciones sustituye a las implementaciones nativas de los diferentes contenedores y permitía mejorar la portabilidad de los Web Services.

Con la aparición de AXIS2 y sobre todo con el aumento de la documentación y mejora de estabilidad de las versiones iniciales AXIS2 se ha convertido en la solución de referencia para construir Web Services y desplegarlos bajo los requisitos más exigentes.

Especificaciones de AXIS2:

AXIS2 implementa la especificación JAX-WS del Java Comunity Process, WS-Messging y WS-Security, como veremos mas adelante dispone de una estructura modular que permitirá ampliar la funcionalidad básica del sistema en el futuro gracias al desarrollo de modulos adicionales (al estilo de los plugins de Eclipse).

Soporta protocolos de Web Services más actuales que SOAP como por ejemplo REST.

Conceptos básicos en AXIS2:

Las mejoras han sido numerosas, pero cabe destacar los conceptos de Ingeniería que se han aplicado a su diseño interno. En primer lugar, todas las funcionalidades de AXIS2 se encuentran dividas en módulos, de manera que se distinguen:
- módulos básicos,
- módulos opcionales

Cada modulo tiene asociados una serie de flujos de entrada y de salida sobre los que podemos configurar manejadores (handlers), estos manejadores habitualmente serán clases que el contenedor notificará cuando se produzca un evento (la llegada de un mensaje SOAP por ejemplo).

Uno de los aspectos fundamentales de AXIS2 es AXIOM (Axis Object Model), AXIOM se trata del modelo de objetos que AXIS2 emplea para serializar y deserializar mensajes SOAP aprovechando para ello API’s de la familia JAX (Java Api for XML…). AXIOM aporta su propia capa de abstracción encima de las API’s de JAX pero en general el funcionamiento es similar al empleado en DOM de JAXP.

Con AXIOM obviamente estamos expuestos a la implementación aportada por el parser de XML, pero AXIS2 incluye su propia implementación de referencia, con la que debería ser suficiente para la mayoría de aplicaciones estándar (en caso contrario siempre se puede contar con algún experto que solucione las limitaciones de una implementación dada).

Ficheros de configuración

En Axis2 se sigue permitiendo el despliegue inmediato de Web Services mediante el empleo de ficheros jws, pero también se puede emplear el potente fichero de configuración axis2.xml del contenedor para parametrizar numerosos aspectos del funcionamiento, por ejemplo:
- numero de hilos creados a priori para atender solicitudes (mejorando el tiempo de respuesta)
- módulos habilitados en el contenedor
- si se va a permitir el despliegue en caliente de nuevos servicios e incluso el re-despliegue de servicios modificados.

Además de este fichero de configuración genérico disponemos de un fichero de configuración especifico para cada conjunto de Web Services llamado service.xml, es decir, podemos parametrizar por un lado el contenedor y por otro cada uno de los Web Services,

Por último tenemos la posibilidad de desplegar nuestros propios modulos que tendrán asociados manejadores invocados al producirse ciertos eventos.