icono_twiter icono Facebook
Carlos García Pérez

Técnico especialista en informática de empresa (CEU).

Ingeniero Técnico en Informática de Sistemas (UPM)

Creador de MobileTest, Haaala!, Girillo, toi18n.

Charla sobre desarrollo de aplicaciones en Android.

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2008-04-04

Tutorial visitado 32.615 veces Descargar en PDF
Axis2. Un completo ejemplo de creación de un servicio Web

Axis2. Un completo ejemplo de creación de un servicio Web

En este tutorial vamos realizar las siguientes tareas:

  1. Definición de una interface Java a partir de la cual generaremos el servicio Web.
  2. Generar la definición del servicio Web (WSDL) a partir del interface.
  3. Generar el esqueleto (Skeleton) del servicio Web del WSDL.
  4. Implementar la lógica de negocio del servicio Web.
  5. Generar el archivo del Servicio Web AAR (Axis Archive)
  6. Desplegar el servicio Web.
  7. Generar un cliente.
  8. Invocar el servicio Web.

Definición de una interface Java a partir de la cual generaremos el servicio Web

Generar la definición del servicio Web (WSDL) a partir del interface.

%AXIS_HOME%/bin/java2wsdl -of calculadora.wsdl -cn com.autentia.ws.sample1.Calculadora
  • En donde el parámetro of es el nombre del archivo WSDL que deseamos generar
  • En donde el parámetro cn es el nombre de la clase a partir de la cual deseamos generar el WSDL.

Archivo generado: calculadora.xsdl

Generar el esqueleto (Skeleton) del servicio Web a partir del WSDL.

%AXIS_HOME%/bin/wsdl2java -p com.autentia.ws.sample1.servidor -S . -or -ss -sd -u --noMessageReceiver -uri calculadora.wsdl
  • El parámetro p indica el nombre del paquete donde deseamos que se generen las clases.
  • El parámetro S indica el nombre de la carpeta en donde deseamos que se generen las clases (por defecto crea una carpeta src)
  • El parámetro or indica que se sobreescriban los archivos.
  • El parámetro ss indica que se generen las clases del servicio web (Por defecto NO se generan)
  • El parámetro sd indica que se genere el descriptor de despliegue del servicio web.
  • El parámetro u indica que no se generen innerclases sino que cada clase está en un archico propio.
  • El parámetro noMessageReceiver indica que no se genere un Message Receiver especifico para el servicio Web.
  • El parámetro uri indica el WSDL de partida.

El descriptor de despliegue generado (services.xml):

Implementar la lógica de negocio del servicio Web.

Generar el archivo del Servicio Web AAR (Axis Archive)

Para desplegar un servicios Web en Axis2, debemos generar un archivo AAR.

Los archivos AAR, son como los archivos WAR, EAR. Es decir son archivos JAR o ZIP que contienen archivos y directorios bajo una estructura definida.

Los pasos generar el archivo aar son:

  1. Creamos una carpeta de nombre Calculadora
  2. Dentro de la carpeta Calculadora copiamos las clases com.autentia.ws.sample1 manteniendo la estructura.
  3. Dentro de la carpeta Calculadora creamos una carpeta de nombre META-INF y compiamos dentro el archivo services.xml.
  4. Empaquetamos la carpeta Calculadora en un archivo Calculadora.aar. Para ello estando dentro del directorio Calculadora ejecutamos la siguiente instrucción:

    %JAVA_HOME%/bin/jar -cvf Calculadora.aar *

Desplegar el servicio Web.

Existen varios métodos de despliegue de un Servicio Web en Axis2, los más comunes son:

  1. A través la opción "Upload Service" de la página de administración de Axis2.
  2. Copiar el "AAR" al directorio <AXIS_WEBAPP_HOME>\repository\services. Siendo AXIS_WEBAPP_HOME el directorio donde está desplegado Axis2 en el servidor de aplicaciones o contenedor de Servlet.

Generar un cliente

Vamos a generar el cliente desde la propia descripción del servicio Web deplegado.

%AXIS_HOME%/bin/wsdl2java -p com.autentia.ws.sample1.cliente -d adb -S . -or -uri http://127.0.0.1:8080/axis2/services/Calculadora?wsdl
  • El parámetro p indica el nombre del paquete donde deseamos que se generen las clases.
  • El parámetro d indica el tipo de Databinding, es decir, el mapeo entre XML y objetos Java que deseamos.
    Usamos el tipo ADB (Axis Data Binding) que usa AXIOM (Axis Object Model) un modelo especialmente creado
    para Axis que proporciona un alto rendimiento debido a que está basado en el API de StAX (Streaming API for XML) (Alternativas a DOM y SAX)
    una forma de parsear XML bajo demanda, es decir, sólo se parsea lo que se necesita en cada momento.
  • El parámetro S indica el nombre de la carpeta en donde deseamos que se generen las clases (por defecto crea una carpeta src)
  • El parámetro uri indica el WSDL de partida.

Invocar el servicio Web

Conclusiones

Bueno, como podéis ver la generación de servicios Web con Axis2 así como su despliegue o generación de clientes no tiene mucha dificultad.

Axis2 soporta los patrones de mensajería (Síncrona/Asíncrona, Comunicación 1 a 1, 1 a N, N a M, mensajería por eventos, etc.) definidos WSDL 2, así como varios tipos de DataBinding que se salen del alcance de este tutorial.

Un saludo, Carlos García.

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Fecha publicación: 2013-07-07-07:14:11

Autor: sisjose

Saludos y si quisiera poner una autentican básica de http al querer consumir el método Calculadora como lo tendría que hacer.

Fecha publicación: 2008-09-30-03:43:51

Autor:

[Juanhs] El ejemplo está bien, explica una manera de hacer las cosas, pero en mi opinión se deberia de partir no de una clase java para la implementacion del servicio, sino por la definicion de un schema xml con la definicion del servicio a partir de aqui se pueden generar los wsdl y las clases java (Castor) necesarias. Esta manera es mucho mas clara y mantenible que es al final lo que cuenta.

Fecha publicación: 2008-04-04-01:47:36

Autor:

[Iván] Un tutorial muy útil. ¡Sigue así!