apache axis v1.1

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

Upload: maga-lasic

Post on 02-Jul-2015

830 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Apache axis v1.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

Page 2: Apache axis v1.1

1

30

d

e J

ulio

d

el 2

01

3

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

Page 3: Apache axis v1.1

2

30

d

e J

ulio

d

el 2

01

3

Funcionamiento 9

Como Axis2 maneja los mensajes SOAP 10

Versiones de Axis2 11

Ventajas 11

Prueba 12

CONCLUSIONES 18

FUENTES DE INFORMACION 19

Page 4: Apache axis v1.1

3

30

d

e J

ulio

d

el 2

01

3

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.

Page 5: Apache axis v1.1

4

30

d

e J

ulio

d

el 2

01

3

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

Page 6: Apache axis v1.1

5

30

d

e J

ulio

d

el 2

01

3

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

Page 7: Apache axis v1.1

6

30

d

e J

ulio

d

el 2

01

3

(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.

Page 8: Apache axis v1.1

7

30

d

e J

ulio

d

el 2

01

3

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.

Page 9: Apache axis v1.1

8

30

d

e J

ulio

d

el 2

01

3

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.

Page 10: Apache axis v1.1

9

30

d

e J

ulio

d

el 2

01

3

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:

Page 11: Apache axis v1.1

10

30

d

e J

ulio

d

el 2

01

3

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.

Page 12: Apache axis v1.1

11

30

d

e J

ulio

d

el 2

01

3

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.

Page 13: Apache axis v1.1

12

30

d

e J

ulio

d

el 2

01

3

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

Page 14: Apache axis v1.1

13

30

d

e J

ulio

d

el 2

01

3

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.

Page 15: Apache axis v1.1

14

30

d

e J

ulio

d

el 2

01

3

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.

Page 16: Apache axis v1.1

15

30

d

e J

ulio

d

el 2

01

3

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.

Page 17: Apache axis v1.1

16

30

d

e J

ulio

d

el 2

01

3

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.

Page 18: Apache axis v1.1

17

30

d

e J

ulio

d

el 2

01

3

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.

Page 19: Apache axis v1.1

18

30

d

e J

ulio

d

el 2

01

3

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.

Page 20: Apache axis v1.1

19

30

d

e J

ulio

d

el 2

01

3

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