# Apache Axis2

Apache Axis2 es un motor nuclear para servicios web. Es un rediseño total y una reimplementación completa de la ampliamente difundida pila SOAP "Apache Axis". Existen implementaciones de Axis2 en Java y en C.
Axis2 no solo provee la capacidad de agregar servicios web a las aplicaciones web, sino que además puede funcionar como servidor autónomo.

## ¿Por qué Apache Axis2?

En el curso de la Cumbre 2004, realizada en Colombo, Sri Lanka, se introdujo una nueva arquitectura para Axis2. Esta nueva arquitectura, en la que se basa Axis2, es más flexible, eficiente y configurable en comparación con la de Axis1.x. Ciertos conceptos probados y bien establecidos de Axis 1.x, como handlers etc., se han conservado en la nueva arquitectura.
Apache Axis2 no solo soporta SOAP 1.1 y SOAP 1.2, sino que también integra soporte para el popular estilo REST para servicios web. Una misma implementación de la lógica de negocios puede ofrecer a la vez una interfaz al estilo WS-* como también un acceso al estilo REST/POX.
Axis2 ofrece soporte para Spring Framework.
Axis2 viene con numerosas nuevas características, mejoras e implementaciones de estándares de la industria. Las características claves ofrecidas son:

## Características de Axis2

Apache Axis2 incluye soporte para los siguientes estándares:
* WS - ReliableMessaging - vía Apache Sandesha2
* WS - Coordination - vía Apache Kandula2
* WS - AtomicTransaction - vía Apache Kandula2
* WS - SecurityPolicy - vía Apache Rampart
* WS - Security - vía Apache Rampart
* WS - Trust - vía Apache Rampart
* WS - SecureConversation - vía Apache Rampart
* SAML 1.1 - vía Apache Rampart
* SAML 2.0 - vía Apache Rampart
* WS - Addressing - módulo incluido como parte de Axis2 core
Más allá de los estándares mencionados, Axis2 ofrece las siguientes características:
* Velocidad - Axis2 usa su propio modelo de objetos y un análisis sintáctico basado en StAX (Streaming API para XML) para lograr una velocidad de proceso significativamente mayor que la de versiones anteriores de Apache Axis.
* Uso reducido de memoria- Axis2 fue diseñado desde la base teniendo en cuenta el objetivo de una reducida demanda de memoria.
* AXIOM - Axis2 viene con su propio y eficiente modelo de objetos, AXIOM, para el procesamiento de mensajes, modelo que es extensible, ha sido optimizado con miras a desempeño y rapidez, simplificando su uso por parte de los desarrolladores.
* Despliegue instantáneo - Axis2 está equipado con la capacidad de desplegar servicios web y handlers con el sistema en pleno funcionamiento. En otras palabras, es posible agregar nuevos servicios al sistema sin tener que detener la ejecución del servidor. Basta con copiar simplemente los archivos requeridos de servicios web al directorio de servicios en el repositorio, y el modelo de despliegue automáticamente desplegará el servicio y lo pondrá a disposición para su uso.
* Servicios web asincrónicos - Axis2 ahora soporta servicios web asincrónicos y la invocación asincrónica de servicios web por medio de clientes y transportes no bloqueantes.
* Soporte de MEP - Axis2 ahora viene con la conveniente flexibilidad de soportar "patrones de intercambio de mensajes" (Message Exchange Patterns (MEPs)) con su soporte incorporado para los MEPs básicos definidos en WSDL 2.0.
* Flexibilidad - La arquitectura de Axis2 le otorga al desarrollador completa libertad para insertar extensiones al motor para el procesamiento a la medida de encabezamientos (headers), administración del sistema, o cualquier otro aspecto imaginable.
* Estabilidad - Axis2 define un conjunto de interfaces publicados que cambian con relativa lentitud, comparados con el resto de Axis.
* Despliegue orientado a componentes - Se puede fácilmente definir redes reutilizables de handlers para implementar patrones comunes de procesamiento para determinadas aplicaciones o para distribuir estos elementos a las contrapartes.
* Framework de transporte - Axis2 tiene una abstracción limpia y simple para la integración y el uso de diversos transportes (esto es, senders y listeners para SOAP por vía de diversos protocolos tales como SMTP, FTP, middleware orientada a mensajes, etc.), siendo el núcleo del motor completamente independiente de los mecanismos de transporte.
* Soporte de WSDL - Axis2 soporta Web Services Description Language, versiones 1.1 y 2.0 , lo que facilita la construcción de stubs para el acceso a servicios remotos, como también automáticamente exportar de Axis2 descripciones legibles por máquinas de los servicios desplegados.
* Agregados - Se han incorporado diversas especificaciones relativas de los servicios web, entre las que se incluyen WSS4J para securidad (Apache Rampart), Sandesha para mensajería confiable, Kandula que es un encapsulamiento de WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity.
* Composición y extensibilidad - Con el empleo de módulos y fases se mejoran las habilidades de composición y extensibilidad. Los módules de Axis2 soportan la facultat de composición y también pueden soportar nuevas especificaciones WS-* de manera más simple y limpia. Sin embargo no permiten su despliegue instantáneo, ya que alteran el comportamiento global del sistema.

## Tecnologías relacionadas

* Apache Axis
* Apache CXF - otro framework para servicios web de Apache (ex XFire y Celtix).
* Java Web Services Development Pack - framework para servicios web.
* XML Interface for Network Services - framework para servicios RPC y servicios web.
* Web Services Invocation Framework - API Java para la invocación de servicios web.
* AlchemySOAP - framework para servicios web de código abierto basado en SOAP e implementado en C++.