SlideShare a Scribd company logo
1 of 20
Apache Axis
Evolución de las versiones:
Apache Axis (Apache eXtensible Interaction System) es un
framework de código abierto, basado en XML para servicios web.
Consiste en una implementación en Java y otra en C++ del servidor
SOAP, así como diversos utilitarios y APIs para generar y desplegar
aplicaciones de servicios web.
30
de
Julio
del
2013
Integrantes de Grupo # 6
0900 02 1662 Marvin Alberto González Flores
0092 07 2972 Karen Eunice Aguilar Guzmán
0092 07 6720 Mageyda Ofemia Sical Raxcacó
0092 07 2210 B'alam Luis Felipe Rodriguez
0900 02 4243 Tulio Alberto Martinez Gómez
0092 99 3082 Luis Alberto de León
912 03 13038 Mario Guaran
0092 03 1280 Gerber Flores
0092 04 0386 Cristofer Walfredh Ruano Calderón
0092 05 0091 Luis Alfredo Xalin Lorenzana
0092 07 0202 Victor Alejandro Murga Muñoz
1
30deJuliodel2013
CONTENIDO
SOAP 4
Estructura 4
Apache Axis 4
Qué es apache Axis 4
Para qué sirve 5
Cómo funciona 5
El Apache Axis Web Services Toolkit 5
Apache Axis 2 6
Historia 6
Qué es apache Axis2 6
Modo standalone 6
Modo aplicación web 6
Módulos 7
WS - ReliableMessaging - vía Apache Sandesha2 7
WS - Coordination - vía Apache Kandula2 7
WS - AtomicTransaction - vía Apache Kandula2 7
WS - SecurityPolicy - vía Apache Rampart 7
WS - Security - vía Apache Rampart 7
WS - Trust - vía Apache Rampart 7
WS - SecureConversation - vía Apache Rampart 8
SAML 1.1 y 2.0- vía Apache Rampart 8
WS - Addressing - módulo incluido como parte de Axis2 core 8
Características 8
Velocidad 8
AXIOM 8
Hot Deployment 8
Asincronía de servicios Web 8
Soporte a MEP 9
Flexibilidad 9
Componentes orientados al despliegue 9
Framework de Transporte 9
Soporte para WSDL 9
2
30deJuliodel2013
Funcionamiento 9
Como Axis2 maneja los mensajes SOAP 10
Versiones de Axis2 11
Ventajas 11
Prueba 12
CONCLUSIONES 18
FUENTES DE INFORMACION 19
3
30deJuliodel2013
INTRODUCCION
Apache Axis es una implementación OpenSource de SOAP que proporciona un
entorno de ejecución para Servicios Web implementados en Java.
A grandes rasgos, un Servicio Web es un conjunto de métodos que realizan
una funcionalidad que se exponen al resto de las aplicaciones.
Cualquier aplicación sea cual sea su plataforma o lenguaje en la que está
implementada podrá invocar los métodos que expone el Servicio Web.
Por ejemplo, una aplicación .Net (Implica una plataforma Windows) podría
invocar métodos expuestos por un Servicio Web Java ejecutándose en una
plataforma Linux.
Esto se consigue utilizando protocolos estándar como XML y HTTP y se evitan
los problemas con Firewalls, etc. que otras tecnologías similares como CORBA
o RMI tenían.
Entre otras cosas Axis proporciona:
Un entorno de ejecución para Servicios Web Java (*.jws)
Herramientas para crear WSDL desde clases java.
Herramientas para crear clientes Java desde un WSDL.
Herramientas para desplegar, probar y monitorizar Servicios Web.
Integración con servidores de aplicaciones y contenedores de Servlets.
4
30deJuliodel2013
SOAP
SOAP (siglas de Simple Object Access Protocol) es un protocolo estándar que
define cómo dos objetos en diferentes procesos pueden comunicarse por
medio de intercambio de datos XML. Es uno de los protocolos utilizados en los
servicios Web.
Se trata de un protocolo basado en XML que consta de tres partes: una
envoltura que define un marco para describir lo que es en un mensaje y cómo
procesarlo, un conjunto de reglas de codificación para expresar instancias de
tipos de datos definidos por la aplicación, y una convención para representar
llamadas a procedimientos remotos y respuestas.
Estructura
Apache Axis
Qué es apache Axis
5
30deJuliodel2013
Apache Axis es un framework de código abierto, basado en XML para servicios
web. Consiste en una implementación en Java y otra en C++ del servidor
SOAP, así como diversos utilitarios y APIs para generar y desplegar
aplicaciones de servicios web.
Para qué sirve
Por medio de Apache Axis, los desarrolladores pueden crear aplicaciones
computacionales interoperables y distribuidas. Axis se desarrolla bajo los
auspicios de la Apache Software Foundation.
Cómo funciona
El Apache Axis Web Services Toolkit
El proyecto de código abierto Apache Axis es una herramienta versátil para la
creación de servicios web utilizando el lenguaje de programación Java.
Uno de los componentes más utilizados del toolkit es una aplicación web
basada en Tomcat (incluyendo un servlet) que puede servir de host para web
service.
La figura muestra cómo el servlet Axis convierte tu servidor Tomcat en un
motor de servicios web de alto rendimiento. Peticiones HTTP entrantes
(SOAP/JAX-RPC) son procesadas por el servlet y se envían a una de la
implementación de servicios web (A, B y C en la figura). Tenga en cuenta que
el servlet toma la mayor parte del trabajo de implementación de servicios web
6
30deJuliodel2013
(como el manejo del protocolo HTTP, analizar los mensajes entrantes). El
desarrollador de servicios web Axis, puede centrar su esfuerzo en el diseño y la
programación de la lógica de servicio.
Apache Axis 2
Historia
Axis2 es el nuevo motor de webservices de Apache. Su arquitectura ha sido
diseñada desde cero, teniendo en cuenta las lecciones aprendidas con Axis1.
Cabe destacar su mejor rendimiento, pero sobretodo su sistema de módulos
que permite, de forma sencilla, añadir nuevas funcionalidades y soportar
futuras especificaciones sobre webservices. Axis2 puede utilizar SOAP 1.1,
SOAP 1.2 y REST.
Qué es apache Axis2
El proyecto Apache Axis2 es una aplicación basada en Java, tanto del lado del
cliente como del lado del servidor, para el desarrollo de servicios Web.
Proporciona un completo modelo de objetos y una arquitectura modular que
facilita la tarea de añadir funcionalidad y dar soporte para nuevos servicios
Web. Existen implementaciones de Axis2 en Java y en C.
Modo standalone
Axis2 puede ejecutarse de 2 modos, como aplicación web desplegada en un
contenedor de servlets o como servidor standalone gracias a un mini servidor
web que trae integrado.
El modo standalone es una novedad respecto a Axis1 y muy útil para el
desarrollador en entornos limitados.
Modo aplicación web
Aunque el modo standalone es muy útil, lo normal es distribuir Axis2 como una
aplicación web para usar toda la potencia y funcionalidad de nuestro
contenedor de servlets favorito.
7
30deJuliodel2013
Módulos
WS - ReliableMessaging - vía Apache Sandesha2
Describe un protocolo que permite que los mensajes SOAP que se entregarán
de forma fiable entre aplicaciones distribuidas en la presencia de componentes
de software, sistema o red con fallas
WS - Coordination - vía Apache Kandula2
Describe un marco extensible para proporcionar protocolos que coordinan las
acciones de las aplicaciones distribuidas. Tales protocolos de coordinación que
se utilizan para apoyar una serie de aplicaciones, incluyendo aquellos que
necesitan llegar a un acuerdo consistente en el resultado de las transacciones
distribuidas.
WS - AtomicTransaction - vía Apache Kandula2
Define tres protocolos (finalización, confirmación en dos fases volátil, y
compromiso duradero en dos fases), este conjunto garantiza la activación
automática, el registro, la propagación y terminación atómica de Servicios Web.
WS - SecurityPolicy - vía Apache Rampart
Extiende los protocolos de seguridad fundamentales ofreciendo mecanismos
para representar las capacidades y necesidades de servicios web como
políticas.
WS - Security - vía Apache Rampart
Especifica la integridad y la confidencialidad que pueden ser aplicadas en los
mensajes y permite la comunicación de los distintos formatos de tokens de
seguridad para garantizar la seguridad de extremo a extremo
WS - Trust - vía Apache Rampart
Se ocupa específicamente de la expedición, renovación y validación de los
tokens de seguridad, así como con las formas de establecer, evaluar la
presencia y las relaciones de confianza entre los agentes participantes en un
intercambio de mensajes seguros.
8
30deJuliodel2013
WS - SecureConversation - vía Apache Rampart
Permite la creación y el intercambio de contextos de seguridad, el propósito es
establecer contextos seguros para múltiples intercambios de mensajes SOAP.
SAML 1.1 y 2.0- vía Apache Rampart
Es un estándar XML para el intercambio de datos de autenticación y
autorización entre dominios de seguridad.
WS - Addressing - módulo incluido como parte de Axis2 core
Es una especificación de los mecanismos de transporte neutrales que permiten
a los web services comunicar la información de direccionamiento.
Características
Velocidad
Axis2 utiliza su propio modelo de objetos y StAX (Streaming API para XML)
para lograr analizar a una significativamente mayor velocidad que las versiones
anteriores de Apache Axis.
AXIOM
Axis2 viene con su propio modelo de objetos, AXIOM, para el procesamiento
de mensajes, el cual es extensible, eficiente y conveniente para el
desarrollador.
Hot Deployment
Axis2 está equipado con la capacidad de despliegue de servicios Web y
manejadores mientras el sistema está activo y ejecutándose.
En otras palabras, los nuevos servicios se pueden añadir al sistema sin tener
que apagar el servidor. Simplemente se coloca el servicio Web en el archivo de
los servicios de directorio en el repositorio, y el modelo de despliegue se ocupa
de desplegar automáticamente el servicio y hacer que el mismo esté disponible
para su uso.
Asincronía de servicios Web
Axis2 soporta servicios Web asincrónicos y sincrónos en la invocación de
servicios Web con fines de no bloquear el transporte y los clientes.
9
30deJuliodel2013
Soporte a MEP
Cuenta con la flexibilidad necesaria para soportar patrones de intercambio de
mensajes (MEP), dotados de una base de apoyo para los MEP’s definidos en el
WSDL 2.0.
Flexibilidad
La arquitectura le otorga al desarrollador la completa libertad para agregar
extensiones y para la gestión del sistema.
Componentes orientados al despliegue
Permite definir fácilmente redes de handlers (manejadores) reutilizables para
implementar patrones de procesamiento comunes para la aplicación.
Framework de Transporte
Se logró desarrollar un framework para la integración y uso de transportes (es
decir, los remitentes y los listeners a través de SOAP, para protocolos como
SMTP, FTP, middleware orientado a mensajes, etc); y el núcleo del motor es
completamente independiente del transporte.
Soporte para WSDL
Soporta la versión 1.1 y 2.0 de WSDL. Permite construir fácilmente stubs parar
acceder los servicios de acceso remoto, y también la exportación automática
de las descripciones de los servicios web que hayan sido desplegados.
Funcionamiento
Para lograr comprender Axis2 y su funcionamiento, es necesario tener una idea
del ciclo de vida de un Web-Service message.
El gráfico a continuación muestra su funcionamiento:
10
30deJuliodel2013
El envío de la solicitud original crea el mensaje SOAP, un mensaje XML que
consta de cabeceras y un cuerpo.
Si el sistema requiere el uso de recomendaciones WS tales como WS-
Addressing o WS-Security, el mensaje puede someterse a tratamiento adicional
antes de su salida del remitente.
Una vez que el mensaje esté listo, se envía a través de un transporte, tal como
HTTP, JMS, y así sucesivamente.
El mensaje actúa de la manera del receptor, que tiene en el mensaje a través
de la escucha de transporte. (En otras palabras, si la solicitud no tiene un
oyente HTTP funcionando, no va a recibir cualquier tipo de mensajes HTTP.)
Una vez más, si el mensaje es parte de un sistema que requiere el uso de WS-
Security y otras recomendaciones, pueden necesitar tratamiento adicional con
el fin de comprobar las credenciales o descifrar la información sensible.
Por último, un despachador determina la aplicación específica (u otro
componente, como un método de Java) para el mensaje que se pretendía, y lo
envía a ese componente; el cual es parte de una aplicación diseñada para
trabajar con los datos que se envían hacia adelante y hacia atrás.Axis2 ofrece
soporte para Spring Framework.
Como Axis2 maneja los mensajes SOAP
Axis2 puede manejar el procesamiento del remitente y el receptor y englobarlos
en una transacción.
Desde la perspectiva de Axis2, la estructura toma la siguiente forma
representada en la imagen a continuación:
En cada extremo, la aplicación ha sido diseñada para hacer frente a los
mensajes (enviado o recibido). En el medio se encuentra Axis2, o más bien, se
puede hacer que se encuentre Axis2.
El real valor de los servicios Web es que tanto el remitente como el receptor
(cada uno de los cuales puede ser el servidor o el cliente) no tienen que estar
necesariamente en la misma plataforma, y mucho menos ejecutar la misma
aplicación.
11
30deJuliodel2013
Suponiendo que se está ejecutando en Axis2 ambas partes, el proceso se
parece a esto:
El remitente crea el mensaje SOAP.
Los “manejadores” de Axis realizan las acciones necesarias en cualquier
mensaje tal como la encriptación.
El “Transport Sender” envía el mensaje.
En el punto de llegada, el “Transport Listener” detecta el mensaje.
El “Transport Listener” pasa el mensaje a cualquier manejador en la
parte receptora.
Una vez que el mensaje ha sido transformado en el que era antes de la
"fase de expedición”, es entregado a los despachadores, que lo pasan a
la aplicación correspondiente.
En Axis2, estas acciones se desglosan en "fases", con varias fases de pre-
definidos, como la fase "previo al envío", "envío" y procesamiento del mensaje",
que se está construyendo. Cada fase es una colección de "manejadores".
Axis2 le permite controlar que manejador se emplea en cada fase, y el orden
en que los manejadores se ejecutan dentro de las fases. También se puede
agregar fases y manipuladores propios.
Los manejadores provienen de "módulos" que pueden conectarse a un sistema
de funcionamiento Axis2.
Estos módulos, como Rampart, que proporciona una implementación de WS-
Security, y Sandesha, que proporciona una implementación de WS-
ReliableMessaging, son los principales mecanismos de extensibilidad Axis2.
Versiones de Axis2
Versión Fecha Publicación
Apache Axis2/Java 1.6.2 17-04-2012
Apache Axis2/Java 1.5.6 y 1.6.1 30-08-2011
Apache Axis2/Java Versión 1.5.5 29-05-2011
Apache Axis2/Java Versión 1.6.0 17-05-2011
Apache Axis2/Java Versión 1.5.4 19-12-2010
Apache Axis2/Java Versión 1.5.3 12-11-2010
Apache Axis2/Java Versión 1.5.2 06-09-2010
Apache Axis2/Java Versión 1.5.1 23-10-2009
Ventajas
1. Posee una arquitectura diferente que permite mejor rendimiento.
12
30deJuliodel2013
2. Soporta un conjunto de estándares:
2.1. WS - ReliableMessaging
2.2. WS - Coordination
2.3. WS - AtomicTransaction
2.4. WS - SecurityPolicy
2.5. WS - Security
2.6. WS - Trust
2.7. WS - SecureConversation
2.8. SAML 1.1
2.9. SAML 2.0
2.10. WS – Addressing
3. Soporta protocolos de Web Services más actuales que SOAP como por ejemplo
REST.
4. Axis2 ofrece soporte para Spring Framework.
Prueba
Se seguiron una serie de trabajos académicos que se ha hecho en esta área. Se
comenzó con Alek y Madhu 's "SOAP Benchmark Suite de v1" y la "SOAP Benchmark
Suite de v2". El original “SOAP Bench v1” había enviado, recibido o transmitido
operaciones para arreglos de bytes (codificado en Base64), enteros, dobles, y
cadenas. “SOAP Bench v2” añadió operaciones de enviar, recibir o transmitir por dos
estructuras más de datos: SimpleEvent (un complexType con sequenceNumber
/integer, timestamp/doublé, message/string) y MeshInterfaceObject (un complexType
con 2 números enteros “x, y” y un valor doble).
Se probaron tres versiones:
Axis1 WSDL2Java
Axis2 WSDL2Java con ADB data binding: El objetivo de Axis2 Databinding es
proporcionar un esquema,ligero y simple, del compilador/ generador Java bean
para Axis2. De ninguna manera tiene la intención de ser un compilador de
esquema totalmente funcional como XMLBeans. Tenga en cuenta que el ADB
está escrito en una forma que permite que sea utilizado como un compilador de
esquema independiente y también para ser extendido para generar código para
otros idiomas.
Axis2 WSDL2Java con Apache XMLBeans data binding: El método XMLBeans,
a diferencia de ADB, crea clases individuales para cada objeto que debe
modelar. Por ejemplo, la generación de un cliente para el archivo WSDL crea
642 archivos y carpetas. Un pequeño número de estos archivos se relacionan
13
30deJuliodel2013
directamente con el cliente real que se está creando. El resto está relacionado
con el procesamiento de XML, e incluyen objetos enlazados a datos para los
esquemas, codificaciones y otros objetos necesarios para procesar los
mensajes.
También hemos creado versiones de los servicios de referencia utilizando Axis1,
Axis2/ADB y Axis2/XmlBeans. Recibimos Axis 1 y Axis2 en una sola instancia de
Apache Tomcat y los dos servicios Axis2 (ADB y XMLBeans) fueron desplegados en el
mismo repositorio Axis2 webapp.
Entorno de prueba
El servidor se ejecuta en una instancia de Tomcat (Apache Tomcat/5.5.17) utilizando
JDK1.5 (1.5.0_06-b05) en Ubuntu Dapper (versión Linux 2.6.15-18-686) y la
especificación de la máquina es el siguiente:
Dell Dimension 9150 Pentium (r) D Procesador 820 con tecnología Dual Core
(2.80GHz, 800FSB), con 2 GB Cual Channel DDR2 SDRAM.
Tomcat se ejecuta con el siguiente JAVA_OPTS:
server-Xms256m-Xmx700M-Xincgc-XX: PermSize = 128m-XX: MaxPermSize = 256m
Los clientes se ejecutan en un Lenovo Thinkpad T43 con JDK1.5 (build 1.5.0_06-b05)
en Windows XP Service Pack 2
Lenovo ThinkPad T43 Intel Pentium M procesador 760 (2.00GHz), con 1,5 GB de
SDRAM
Resumen de los resultados
Las principales conclusiones son las siguientes:
Axis2 (ADB o XMLBeans) es apreciable (entre 4-5 veces) mejor que Axis1.
En Axis2, ADB es sustancialmente mejor que XMLBeans.
Axis2 vence a Axis1 para grandes conjuntos de datos.
Listas para el primer conjunto de pruebas
La siguiente tabla muestra el primer escenario en el que tanto el cliente y el servicio
están utilizando el mismo toolkit/databinding.
14
30deJuliodel2013
Echo operation for primitives
Resultados:
Como se puede ver en la gráfica, el rendimiento del núcleo en dobles, enteros
y cadenas es significativamente mejor. El eje Y del gráfico es el tiempo tomado,
por lo menos es mejor.
Como se puede ver, la mejora del rendimiento es mejor con pruebas más
grandes.
En otras palabras, Axis2 son mejores para cargas de trabajo más grandes.
15
30deJuliodel2013
Operación Echofor complexTypes
El gráfico muestra el rendimiento de los tipos de complejos, que son los más comunes
en la vida real.
Como puede ver, una vez más la escala de Axis2 es mucho mejor, en
comparación con Axis1 donde el rendimiento se degrada a medida que escala.
También Axis2 muestra un comportamiento mucho más consistente con los
tipos complejos, mientras que Axis1 tiene problemas significativos con
SimpleEvent.
Este comportamiento muestra el efecto que el rediseño de Axis2 ha tenido.
Axis1 termina usando múltiples copias de los datos del mensaje, mientras que
Axis2 agiliza esto para evitar la copia entre los objetos tanto como sea posible.
Estas cifras muestran el impacto de esa estrategia.
16
30deJuliodel2013
Gráficos para el cliente / servidor
Obviamente, si se mezcla un cliente Axis1 con un servidor Axis2 (o viceversa), las
ganancias no serán tan grandes. Sin embargo, las siguientes pruebas dan una idea de
los resultados.
Operación Echo for pimitives
Resultados:
Este gráfico muestra que, ayuda el cambiar el cliente deAxis1 a Axis2, aunque
los clientes utilicen Axis1.
Cambar de un servidor Axis1 a un Axis2,da un aumento de rendimiento en 2x.
Cambiar el cliente y dejar el servidor es un poco menos eficaz.
17
30deJuliodel2013
Conclusión de la prueba
Basta con mirar el tiempo necesario para el funcionamiento de todo el conjunto de
pruebas:
Axis2/ADB Client - Axis2 /ADB Service 178,829 segundos
Axis2/XmlBeans Client - Axis2/XmlBeans
Service
330,093 segundos
Axis1.X Client - Axis2/ADB Service 421,219 segundos
Axis1.X Client - Axis1.X Service 1359.094 segundos
Axis2, sin duda, ofrece un rendimiento mucho mejor en comparación con Axis 1.X,
tanto como un servicio y como cliente. Cuando se utiliza en ambos extremos, las
mejoras de rendimiento pueden ser significativas, especialmente con grandes
conjuntos de tipos de complejos.
18
30deJuliodel2013
CONCLUSIONES
1. Apache Axis es una implementación sólida, madura y extendida para
ejecutar, testear y administrar Servicios Web implementados en Java.
Además detrás de Axis hay importantes organizaciones como Apache,
por lo que eso nos da confianza a la hora de elegir Axis como entorno de
ejecución de servicios Web.
2. Axis nos proporciona herramientas suficientes para crear y depurar
nuestros Servicios Web de una manera fácil.
3. El contract-first enfoque es el mejor camino a seguir cuando setrata de la
implementación de los servicios Web. Afortunadamente, Axis2 tiene
ungenerador de código flexible que soporta primera mano contract-first
desarrollo.
19
30deJuliodel2013
FUENTES DE INFORMACION
1. http://es.wikipedia.org/wiki/Apache_Axis
2. http://axis.apache.org/axis2/java/core/
3. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=axis
4. http://maypun.blogspot.com/2009/09/apache-axis2.html

More Related Content

Similar to Apache axis v1.1 (20)

Servicios Web II.ppt
Servicios Web II.pptServicios Web II.ppt
Servicios Web II.ppt
 
Web Services
Web ServicesWeb Services
Web Services
 
Web Services
Web ServicesWeb Services
Web Services
 
Windows Communication Foundation
Windows Communication FoundationWindows Communication Foundation
Windows Communication Foundation
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Proyecto
ProyectoProyecto
Proyecto
 
ingenieria web.pptx
ingenieria web.pptxingenieria web.pptx
ingenieria web.pptx
 
Windows communication foundation(wcf)
Windows communication foundation(wcf)Windows communication foundation(wcf)
Windows communication foundation(wcf)
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web pw
Servicios web pwServicios web pw
Servicios web pw
 
Java2 servicios web
Java2 servicios webJava2 servicios web
Java2 servicios web
 
Web services
Web servicesWeb services
Web services
 
Act1 tecnologiaweb uni1
Act1 tecnologiaweb uni1Act1 tecnologiaweb uni1
Act1 tecnologiaweb uni1
 
Windows communication foundation (wcf)
Windows communication foundation (wcf)Windows communication foundation (wcf)
Windows communication foundation (wcf)
 
Windows communication foundation (wcf)
Windows communication foundation (wcf)Windows communication foundation (wcf)
Windows communication foundation (wcf)
 
Wcf.ppp
Wcf.pppWcf.ppp
Wcf.ppp
 
Open stack vs open nebula
Open stack vs  open nebulaOpen stack vs  open nebula
Open stack vs open nebula
 
Appserv
AppservAppserv
Appserv
 
Unidad_2
Unidad_2Unidad_2
Unidad_2
 
SOA y Web Services
SOA y Web ServicesSOA y Web Services
SOA y Web Services
 

Apache axis v1.1

  • 1. Apache Axis Evolución de las versiones: Apache Axis (Apache eXtensible Interaction System) es un framework de código abierto, basado en XML para servicios web. Consiste en una implementación en Java y otra en C++ del servidor SOAP, así como diversos utilitarios y APIs para generar y desplegar aplicaciones de servicios web. 30 de Julio del 2013 Integrantes de Grupo # 6 0900 02 1662 Marvin Alberto González Flores 0092 07 2972 Karen Eunice Aguilar Guzmán 0092 07 6720 Mageyda Ofemia Sical Raxcacó 0092 07 2210 B'alam Luis Felipe Rodriguez 0900 02 4243 Tulio Alberto Martinez Gómez 0092 99 3082 Luis Alberto de León 912 03 13038 Mario Guaran 0092 03 1280 Gerber Flores 0092 04 0386 Cristofer Walfredh Ruano Calderón 0092 05 0091 Luis Alfredo Xalin Lorenzana 0092 07 0202 Victor Alejandro Murga Muñoz
  • 2. 1 30deJuliodel2013 CONTENIDO SOAP 4 Estructura 4 Apache Axis 4 Qué es apache Axis 4 Para qué sirve 5 Cómo funciona 5 El Apache Axis Web Services Toolkit 5 Apache Axis 2 6 Historia 6 Qué es apache Axis2 6 Modo standalone 6 Modo aplicación web 6 Módulos 7 WS - ReliableMessaging - vía Apache Sandesha2 7 WS - Coordination - vía Apache Kandula2 7 WS - AtomicTransaction - vía Apache Kandula2 7 WS - SecurityPolicy - vía Apache Rampart 7 WS - Security - vía Apache Rampart 7 WS - Trust - vía Apache Rampart 7 WS - SecureConversation - vía Apache Rampart 8 SAML 1.1 y 2.0- vía Apache Rampart 8 WS - Addressing - módulo incluido como parte de Axis2 core 8 Características 8 Velocidad 8 AXIOM 8 Hot Deployment 8 Asincronía de servicios Web 8 Soporte a MEP 9 Flexibilidad 9 Componentes orientados al despliegue 9 Framework de Transporte 9 Soporte para WSDL 9
  • 3. 2 30deJuliodel2013 Funcionamiento 9 Como Axis2 maneja los mensajes SOAP 10 Versiones de Axis2 11 Ventajas 11 Prueba 12 CONCLUSIONES 18 FUENTES DE INFORMACION 19
  • 4. 3 30deJuliodel2013 INTRODUCCION Apache Axis es una implementación OpenSource de SOAP que proporciona un entorno de ejecución para Servicios Web implementados en Java. A grandes rasgos, un Servicio Web es un conjunto de métodos que realizan una funcionalidad que se exponen al resto de las aplicaciones. Cualquier aplicación sea cual sea su plataforma o lenguaje en la que está implementada podrá invocar los métodos que expone el Servicio Web. Por ejemplo, una aplicación .Net (Implica una plataforma Windows) podría invocar métodos expuestos por un Servicio Web Java ejecutándose en una plataforma Linux. Esto se consigue utilizando protocolos estándar como XML y HTTP y se evitan los problemas con Firewalls, etc. que otras tecnologías similares como CORBA o RMI tenían. Entre otras cosas Axis proporciona: Un entorno de ejecución para Servicios Web Java (*.jws) Herramientas para crear WSDL desde clases java. Herramientas para crear clientes Java desde un WSDL. Herramientas para desplegar, probar y monitorizar Servicios Web. Integración con servidores de aplicaciones y contenedores de Servlets.
  • 5. 4 30deJuliodel2013 SOAP SOAP (siglas de Simple Object Access Protocol) es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. Es uno de los protocolos utilizados en los servicios Web. Se trata de un protocolo basado en XML que consta de tres partes: una envoltura que define un marco para describir lo que es en un mensaje y cómo procesarlo, un conjunto de reglas de codificación para expresar instancias de tipos de datos definidos por la aplicación, y una convención para representar llamadas a procedimientos remotos y respuestas. Estructura Apache Axis Qué es apache Axis
  • 6. 5 30deJuliodel2013 Apache Axis es un framework de código abierto, basado en XML para servicios web. Consiste en una implementación en Java y otra en C++ del servidor SOAP, así como diversos utilitarios y APIs para generar y desplegar aplicaciones de servicios web. Para qué sirve Por medio de Apache Axis, los desarrolladores pueden crear aplicaciones computacionales interoperables y distribuidas. Axis se desarrolla bajo los auspicios de la Apache Software Foundation. Cómo funciona El Apache Axis Web Services Toolkit El proyecto de código abierto Apache Axis es una herramienta versátil para la creación de servicios web utilizando el lenguaje de programación Java. Uno de los componentes más utilizados del toolkit es una aplicación web basada en Tomcat (incluyendo un servlet) que puede servir de host para web service. La figura muestra cómo el servlet Axis convierte tu servidor Tomcat en un motor de servicios web de alto rendimiento. Peticiones HTTP entrantes (SOAP/JAX-RPC) son procesadas por el servlet y se envían a una de la implementación de servicios web (A, B y C en la figura). Tenga en cuenta que el servlet toma la mayor parte del trabajo de implementación de servicios web
  • 7. 6 30deJuliodel2013 (como el manejo del protocolo HTTP, analizar los mensajes entrantes). El desarrollador de servicios web Axis, puede centrar su esfuerzo en el diseño y la programación de la lógica de servicio. Apache Axis 2 Historia Axis2 es el nuevo motor de webservices de Apache. Su arquitectura ha sido diseñada desde cero, teniendo en cuenta las lecciones aprendidas con Axis1. Cabe destacar su mejor rendimiento, pero sobretodo su sistema de módulos que permite, de forma sencilla, añadir nuevas funcionalidades y soportar futuras especificaciones sobre webservices. Axis2 puede utilizar SOAP 1.1, SOAP 1.2 y REST. Qué es apache Axis2 El proyecto Apache Axis2 es una aplicación basada en Java, tanto del lado del cliente como del lado del servidor, para el desarrollo de servicios Web. Proporciona un completo modelo de objetos y una arquitectura modular que facilita la tarea de añadir funcionalidad y dar soporte para nuevos servicios Web. Existen implementaciones de Axis2 en Java y en C. Modo standalone Axis2 puede ejecutarse de 2 modos, como aplicación web desplegada en un contenedor de servlets o como servidor standalone gracias a un mini servidor web que trae integrado. El modo standalone es una novedad respecto a Axis1 y muy útil para el desarrollador en entornos limitados. Modo aplicación web Aunque el modo standalone es muy útil, lo normal es distribuir Axis2 como una aplicación web para usar toda la potencia y funcionalidad de nuestro contenedor de servlets favorito.
  • 8. 7 30deJuliodel2013 Módulos WS - ReliableMessaging - vía Apache Sandesha2 Describe un protocolo que permite que los mensajes SOAP que se entregarán de forma fiable entre aplicaciones distribuidas en la presencia de componentes de software, sistema o red con fallas WS - Coordination - vía Apache Kandula2 Describe un marco extensible para proporcionar protocolos que coordinan las acciones de las aplicaciones distribuidas. Tales protocolos de coordinación que se utilizan para apoyar una serie de aplicaciones, incluyendo aquellos que necesitan llegar a un acuerdo consistente en el resultado de las transacciones distribuidas. WS - AtomicTransaction - vía Apache Kandula2 Define tres protocolos (finalización, confirmación en dos fases volátil, y compromiso duradero en dos fases), este conjunto garantiza la activación automática, el registro, la propagación y terminación atómica de Servicios Web. WS - SecurityPolicy - vía Apache Rampart Extiende los protocolos de seguridad fundamentales ofreciendo mecanismos para representar las capacidades y necesidades de servicios web como políticas. WS - Security - vía Apache Rampart Especifica la integridad y la confidencialidad que pueden ser aplicadas en los mensajes y permite la comunicación de los distintos formatos de tokens de seguridad para garantizar la seguridad de extremo a extremo WS - Trust - vía Apache Rampart Se ocupa específicamente de la expedición, renovación y validación de los tokens de seguridad, así como con las formas de establecer, evaluar la presencia y las relaciones de confianza entre los agentes participantes en un intercambio de mensajes seguros.
  • 9. 8 30deJuliodel2013 WS - SecureConversation - vía Apache Rampart Permite la creación y el intercambio de contextos de seguridad, el propósito es establecer contextos seguros para múltiples intercambios de mensajes SOAP. SAML 1.1 y 2.0- vía Apache Rampart Es un estándar XML para el intercambio de datos de autenticación y autorización entre dominios de seguridad. WS - Addressing - módulo incluido como parte de Axis2 core Es una especificación de los mecanismos de transporte neutrales que permiten a los web services comunicar la información de direccionamiento. Características Velocidad Axis2 utiliza su propio modelo de objetos y StAX (Streaming API para XML) para lograr analizar a una significativamente mayor velocidad que las versiones anteriores de Apache Axis. AXIOM Axis2 viene con su propio modelo de objetos, AXIOM, para el procesamiento de mensajes, el cual es extensible, eficiente y conveniente para el desarrollador. Hot Deployment Axis2 está equipado con la capacidad de despliegue de servicios Web y manejadores mientras el sistema está activo y ejecutándose. En otras palabras, los nuevos servicios se pueden añadir al sistema sin tener que apagar el servidor. Simplemente se coloca el servicio Web en el archivo de los servicios de directorio en el repositorio, y el modelo de despliegue se ocupa de desplegar automáticamente el servicio y hacer que el mismo esté disponible para su uso. Asincronía de servicios Web Axis2 soporta servicios Web asincrónicos y sincrónos en la invocación de servicios Web con fines de no bloquear el transporte y los clientes.
  • 10. 9 30deJuliodel2013 Soporte a MEP Cuenta con la flexibilidad necesaria para soportar patrones de intercambio de mensajes (MEP), dotados de una base de apoyo para los MEP’s definidos en el WSDL 2.0. Flexibilidad La arquitectura le otorga al desarrollador la completa libertad para agregar extensiones y para la gestión del sistema. Componentes orientados al despliegue Permite definir fácilmente redes de handlers (manejadores) reutilizables para implementar patrones de procesamiento comunes para la aplicación. Framework de Transporte Se logró desarrollar un framework para la integración y uso de transportes (es decir, los remitentes y los listeners a través de SOAP, para protocolos como SMTP, FTP, middleware orientado a mensajes, etc); y el núcleo del motor es completamente independiente del transporte. Soporte para WSDL Soporta la versión 1.1 y 2.0 de WSDL. Permite construir fácilmente stubs parar acceder los servicios de acceso remoto, y también la exportación automática de las descripciones de los servicios web que hayan sido desplegados. Funcionamiento Para lograr comprender Axis2 y su funcionamiento, es necesario tener una idea del ciclo de vida de un Web-Service message. El gráfico a continuación muestra su funcionamiento:
  • 11. 10 30deJuliodel2013 El envío de la solicitud original crea el mensaje SOAP, un mensaje XML que consta de cabeceras y un cuerpo. Si el sistema requiere el uso de recomendaciones WS tales como WS- Addressing o WS-Security, el mensaje puede someterse a tratamiento adicional antes de su salida del remitente. Una vez que el mensaje esté listo, se envía a través de un transporte, tal como HTTP, JMS, y así sucesivamente. El mensaje actúa de la manera del receptor, que tiene en el mensaje a través de la escucha de transporte. (En otras palabras, si la solicitud no tiene un oyente HTTP funcionando, no va a recibir cualquier tipo de mensajes HTTP.) Una vez más, si el mensaje es parte de un sistema que requiere el uso de WS- Security y otras recomendaciones, pueden necesitar tratamiento adicional con el fin de comprobar las credenciales o descifrar la información sensible. Por último, un despachador determina la aplicación específica (u otro componente, como un método de Java) para el mensaje que se pretendía, y lo envía a ese componente; el cual es parte de una aplicación diseñada para trabajar con los datos que se envían hacia adelante y hacia atrás.Axis2 ofrece soporte para Spring Framework. Como Axis2 maneja los mensajes SOAP Axis2 puede manejar el procesamiento del remitente y el receptor y englobarlos en una transacción. Desde la perspectiva de Axis2, la estructura toma la siguiente forma representada en la imagen a continuación: En cada extremo, la aplicación ha sido diseñada para hacer frente a los mensajes (enviado o recibido). En el medio se encuentra Axis2, o más bien, se puede hacer que se encuentre Axis2. El real valor de los servicios Web es que tanto el remitente como el receptor (cada uno de los cuales puede ser el servidor o el cliente) no tienen que estar necesariamente en la misma plataforma, y mucho menos ejecutar la misma aplicación.
  • 12. 11 30deJuliodel2013 Suponiendo que se está ejecutando en Axis2 ambas partes, el proceso se parece a esto: El remitente crea el mensaje SOAP. Los “manejadores” de Axis realizan las acciones necesarias en cualquier mensaje tal como la encriptación. El “Transport Sender” envía el mensaje. En el punto de llegada, el “Transport Listener” detecta el mensaje. El “Transport Listener” pasa el mensaje a cualquier manejador en la parte receptora. Una vez que el mensaje ha sido transformado en el que era antes de la "fase de expedición”, es entregado a los despachadores, que lo pasan a la aplicación correspondiente. En Axis2, estas acciones se desglosan en "fases", con varias fases de pre- definidos, como la fase "previo al envío", "envío" y procesamiento del mensaje", que se está construyendo. Cada fase es una colección de "manejadores". Axis2 le permite controlar que manejador se emplea en cada fase, y el orden en que los manejadores se ejecutan dentro de las fases. También se puede agregar fases y manipuladores propios. Los manejadores provienen de "módulos" que pueden conectarse a un sistema de funcionamiento Axis2. Estos módulos, como Rampart, que proporciona una implementación de WS- Security, y Sandesha, que proporciona una implementación de WS- ReliableMessaging, son los principales mecanismos de extensibilidad Axis2. Versiones de Axis2 Versión Fecha Publicación Apache Axis2/Java 1.6.2 17-04-2012 Apache Axis2/Java 1.5.6 y 1.6.1 30-08-2011 Apache Axis2/Java Versión 1.5.5 29-05-2011 Apache Axis2/Java Versión 1.6.0 17-05-2011 Apache Axis2/Java Versión 1.5.4 19-12-2010 Apache Axis2/Java Versión 1.5.3 12-11-2010 Apache Axis2/Java Versión 1.5.2 06-09-2010 Apache Axis2/Java Versión 1.5.1 23-10-2009 Ventajas 1. Posee una arquitectura diferente que permite mejor rendimiento.
  • 13. 12 30deJuliodel2013 2. Soporta un conjunto de estándares: 2.1. WS - ReliableMessaging 2.2. WS - Coordination 2.3. WS - AtomicTransaction 2.4. WS - SecurityPolicy 2.5. WS - Security 2.6. WS - Trust 2.7. WS - SecureConversation 2.8. SAML 1.1 2.9. SAML 2.0 2.10. WS – Addressing 3. Soporta protocolos de Web Services más actuales que SOAP como por ejemplo REST. 4. Axis2 ofrece soporte para Spring Framework. Prueba Se seguiron una serie de trabajos académicos que se ha hecho en esta área. Se comenzó con Alek y Madhu 's "SOAP Benchmark Suite de v1" y la "SOAP Benchmark Suite de v2". El original “SOAP Bench v1” había enviado, recibido o transmitido operaciones para arreglos de bytes (codificado en Base64), enteros, dobles, y cadenas. “SOAP Bench v2” añadió operaciones de enviar, recibir o transmitir por dos estructuras más de datos: SimpleEvent (un complexType con sequenceNumber /integer, timestamp/doublé, message/string) y MeshInterfaceObject (un complexType con 2 números enteros “x, y” y un valor doble). Se probaron tres versiones: Axis1 WSDL2Java Axis2 WSDL2Java con ADB data binding: El objetivo de Axis2 Databinding es proporcionar un esquema,ligero y simple, del compilador/ generador Java bean para Axis2. De ninguna manera tiene la intención de ser un compilador de esquema totalmente funcional como XMLBeans. Tenga en cuenta que el ADB está escrito en una forma que permite que sea utilizado como un compilador de esquema independiente y también para ser extendido para generar código para otros idiomas. Axis2 WSDL2Java con Apache XMLBeans data binding: El método XMLBeans, a diferencia de ADB, crea clases individuales para cada objeto que debe modelar. Por ejemplo, la generación de un cliente para el archivo WSDL crea 642 archivos y carpetas. Un pequeño número de estos archivos se relacionan
  • 14. 13 30deJuliodel2013 directamente con el cliente real que se está creando. El resto está relacionado con el procesamiento de XML, e incluyen objetos enlazados a datos para los esquemas, codificaciones y otros objetos necesarios para procesar los mensajes. También hemos creado versiones de los servicios de referencia utilizando Axis1, Axis2/ADB y Axis2/XmlBeans. Recibimos Axis 1 y Axis2 en una sola instancia de Apache Tomcat y los dos servicios Axis2 (ADB y XMLBeans) fueron desplegados en el mismo repositorio Axis2 webapp. Entorno de prueba El servidor se ejecuta en una instancia de Tomcat (Apache Tomcat/5.5.17) utilizando JDK1.5 (1.5.0_06-b05) en Ubuntu Dapper (versión Linux 2.6.15-18-686) y la especificación de la máquina es el siguiente: Dell Dimension 9150 Pentium (r) D Procesador 820 con tecnología Dual Core (2.80GHz, 800FSB), con 2 GB Cual Channel DDR2 SDRAM. Tomcat se ejecuta con el siguiente JAVA_OPTS: server-Xms256m-Xmx700M-Xincgc-XX: PermSize = 128m-XX: MaxPermSize = 256m Los clientes se ejecutan en un Lenovo Thinkpad T43 con JDK1.5 (build 1.5.0_06-b05) en Windows XP Service Pack 2 Lenovo ThinkPad T43 Intel Pentium M procesador 760 (2.00GHz), con 1,5 GB de SDRAM Resumen de los resultados Las principales conclusiones son las siguientes: Axis2 (ADB o XMLBeans) es apreciable (entre 4-5 veces) mejor que Axis1. En Axis2, ADB es sustancialmente mejor que XMLBeans. Axis2 vence a Axis1 para grandes conjuntos de datos. Listas para el primer conjunto de pruebas La siguiente tabla muestra el primer escenario en el que tanto el cliente y el servicio están utilizando el mismo toolkit/databinding.
  • 15. 14 30deJuliodel2013 Echo operation for primitives Resultados: Como se puede ver en la gráfica, el rendimiento del núcleo en dobles, enteros y cadenas es significativamente mejor. El eje Y del gráfico es el tiempo tomado, por lo menos es mejor. Como se puede ver, la mejora del rendimiento es mejor con pruebas más grandes. En otras palabras, Axis2 son mejores para cargas de trabajo más grandes.
  • 16. 15 30deJuliodel2013 Operación Echofor complexTypes El gráfico muestra el rendimiento de los tipos de complejos, que son los más comunes en la vida real. Como puede ver, una vez más la escala de Axis2 es mucho mejor, en comparación con Axis1 donde el rendimiento se degrada a medida que escala. También Axis2 muestra un comportamiento mucho más consistente con los tipos complejos, mientras que Axis1 tiene problemas significativos con SimpleEvent. Este comportamiento muestra el efecto que el rediseño de Axis2 ha tenido. Axis1 termina usando múltiples copias de los datos del mensaje, mientras que Axis2 agiliza esto para evitar la copia entre los objetos tanto como sea posible. Estas cifras muestran el impacto de esa estrategia.
  • 17. 16 30deJuliodel2013 Gráficos para el cliente / servidor Obviamente, si se mezcla un cliente Axis1 con un servidor Axis2 (o viceversa), las ganancias no serán tan grandes. Sin embargo, las siguientes pruebas dan una idea de los resultados. Operación Echo for pimitives Resultados: Este gráfico muestra que, ayuda el cambiar el cliente deAxis1 a Axis2, aunque los clientes utilicen Axis1. Cambar de un servidor Axis1 a un Axis2,da un aumento de rendimiento en 2x. Cambiar el cliente y dejar el servidor es un poco menos eficaz.
  • 18. 17 30deJuliodel2013 Conclusión de la prueba Basta con mirar el tiempo necesario para el funcionamiento de todo el conjunto de pruebas: Axis2/ADB Client - Axis2 /ADB Service 178,829 segundos Axis2/XmlBeans Client - Axis2/XmlBeans Service 330,093 segundos Axis1.X Client - Axis2/ADB Service 421,219 segundos Axis1.X Client - Axis1.X Service 1359.094 segundos Axis2, sin duda, ofrece un rendimiento mucho mejor en comparación con Axis 1.X, tanto como un servicio y como cliente. Cuando se utiliza en ambos extremos, las mejoras de rendimiento pueden ser significativas, especialmente con grandes conjuntos de tipos de complejos.
  • 19. 18 30deJuliodel2013 CONCLUSIONES 1. Apache Axis es una implementación sólida, madura y extendida para ejecutar, testear y administrar Servicios Web implementados en Java. Además detrás de Axis hay importantes organizaciones como Apache, por lo que eso nos da confianza a la hora de elegir Axis como entorno de ejecución de servicios Web. 2. Axis nos proporciona herramientas suficientes para crear y depurar nuestros Servicios Web de una manera fácil. 3. El contract-first enfoque es el mejor camino a seguir cuando setrata de la implementación de los servicios Web. Afortunadamente, Axis2 tiene ungenerador de código flexible que soporta primera mano contract-first desarrollo.
  • 20. 19 30deJuliodel2013 FUENTES DE INFORMACION 1. http://es.wikipedia.org/wiki/Apache_Axis 2. http://axis.apache.org/axis2/java/core/ 3. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=axis 4. http://maypun.blogspot.com/2009/09/apache-axis2.html