Vous êtes sur la page 1sur 17

Introducción a AXIS

Objetivo

El objetivo de este tutorial es realizar un ejercicio introductorio a la tecnología de web services utilizando
la herramienta AXIS de Jakarta Apache. Se asume que usted ya posee conocimientos para escribir y
correr código java, asimismo tiene conocimientos de XML.

Conceptos

Los servicios Web son un conjunto de métodos para llamar a procedimientos remotos a través de http.

Apache Axis es un Open Source implementación de SOAP(Simple Object Access Protocol, Protocolo
Simple de Acceso a Objetos) de la W3C, para servidor y cliente.

SOAP es un mecanismo para la comunicación e interoperabilidad de sistemas escritos en distintos


lenguajes de programación, a través de Internet. SOAP intercambia mensajes a través de http: el
cliente envía una solicitud SOAP, y recibe una respuesta SOAP o un error http.

SOAP es un protocolo ligero para intercambio descentralizado de información estructurada, en


ambientes distribuidos. Es un protocolo basado en XML que consiste de 3 partes: una capa que define
un framework para la descripción de mensajes y como se deben de procesar, una serie de reglas para
la definición de los tipos de datos de la aplicación, y una convención para representación de las
llamadas y respuestas a procesos remotos.

Axis Maneja la conversión de objetos java a datos SOAP cuando es enviado a través de la red o recibe
resultados, implementa la API JAX-RPC, uno de los estándares para programar servicios Web.

Axis es compilado en un archivo JAR axis.jar. Necesita varias librerías complementarias para su
funcionamiento, para loggeo, para procesamiento de wsdl.

Planteamiento del Problema

El ejercicio que se plantea es crear y acceder a un Web Service que nos provea de un servicio para
recuperar todas las direcciones de las sucursales de una empresa.
Herramientas utilizadas en el ejercicio

Para la realización de este ejercicio se utilizaron las siguientes herramientas:

• Eclipse ver. 3.1.1 / MyEclipse ver 4.0, o versiones anteriores.


• Librerías:
• axis.jar,
• commons-discovery.jar,
• commons-logging.jar,
• jaxrpc.jar, saaj.jar,
• log4j-1.2.8.jar
(Las cuales pueden ser descargadas de la pagina http://ws.apache.org/axis/ , se utilizo la
versión 1.2.1 Final)
• JBOSS ver. 4.0.3 (se puede descargar de la página http://www.jboss.org/downloads/index ).
Comenzando con el ejercicio

La estructura del WAR para Axis se muestra a continuación:


Siguiendo la estructura anterior empezaremos por crear nuestro Web Service con el servicio para
recuperar las direcciones. Comenzamos por crear un proyecto Web de nombre WebService:

Importamos los jars requeridos para nuestro Web Service en el WEB-INF/lib de nuestro proyecto Web. En
la siguiente figura se muestran las librerías que necesitamos:
Ahora Generamos una clase VO “DireccionVO” que va a encapsular los datos de la dirección. Esta
clase debe de contener variables para el id de la dirección, la calle, la ciudad, el estado, el código
postal, el país, el teléfono y el fax. A continuación se muestra como debe de quedar la clase:

Ahora crearemos nuestra clase que va a contener los servicios y que posteriormente publicaremos
como Servicios Web. La clase se llamara “Servicios1” y contendrá un método llamado “getDireccion()”.
Este método simulara recuperar las direcciones de las sucursales de la empresa. El tipo de retorno es un
arreglo de DireccionesVO, para efectos de simulación solo regresaremos 2 VO de tipo Dirección. El
código de ejemplo para esta clase s el siguiente:
El siguiente paso es crear un archivo xml de nombre “web.xml” en el directorio WEB-INF/ de nuestro
proyecto. Debe de lucir como se muestra a continuación;

Las declaraciones <web-app> son comunes a cualquier otro archivo web.xml. Después de estas
etiquetas procedemos a definir los servlets que utiliza Axis. El primero es el AxisServlet, este representa la
clase org.apache.axis.transport.http.AxisServlet, puede ser considerado la maquina de SOAP,
encargada de procesar y retornar resultados web service. El otro Servlet es el AdminServlet, representa
la clase org.apache.axis.transport.http.AdminServlet, este se utiliza para monitorear web services.
A continuación se muestran las definiciones que tendremos que agregar en el archivo web.xml:

Posteriormente realizamos los mapeos de las URL’s para ser redireccionadas a los servlets definidos
anteriormente. Los URL's definidos bajo el directorio “services” y el URL “/servlet/AxisServlet” serán
despachados por el Servlet llamado AxisServlet.
A continuación definimos como se deben de manejar los archivos con extensión wsdl y con xsd:

Nuestro archivo web.xml deberá lucir como se muestra a continuación:


Actualmente usted debería de visualizar un árbol de archivos similar al que se muestra en la siguiente
imagen:

Configurando el Servidor de Aplicación JBOSS

La siguiente imagen muestra como configurar el servidor de aplicaciones JBOSS para poder levantar,
parar el servidor y deplorar la aplicación desde MyEclipse. Para acceder a la siguiente pantalla tenemos
que ir al Menú “Windows”, opción “Preferences”. En la sección de Applications Servers seleccionamos
la versión del servidor JBOSS que estemos utilizando y Configuramos el path de nuestro servidor y el path
del JDK que estemos utilizando:
Continuando con este ejercicio deployamos nuestra aplicación en el servidor JBOSS:

E Iniciamos el servidor como se muestra en la siguiente imagen:


Publicación de Nuestro servicio Web

Una que hemos terminado los pasos indicados anteriormente, procedemos a crear un archivo de
nombre deployWebService.wsdd. Este archivo contendrá la definición de nuestro servicio. Los Web
services son deplorados usando archivos basados en XML como Web Service Deployment descriptors
(WSDD, Descriptores de Despliegue de Servicios Web).

En las etiquetas siguientes definimos un servicio de nombre Servicios1 que es de tipo


mx.com.services.Servicios1. También declaramos una operación de nombre getDirecciones() que será
la que procesara nuestra petición. Como se utilizan VO en la transferencia de los datos, declaramos el
tipo de dato DireccioVO y el arreglo de direcciones DireccionVO[].

Ahora Creamos un archivo de nombre undeployWebService.wsdd para pder dar de alta el servicio
“Servicio1”
El siguiente paso es crear un proyecto Java de nombre ConfigureWebService.

Configuramos las librerias requeridas de axis:


Ahora, para publicar nuestro servicio, lo efectuamos con la ayuda de nuestro archivo
deployWebService.wsdd

Podemos hacerlo de las siguientes maneras:

1. Primero configuramos las librerías en el classpath del sistema, asumimos que las librerías de axis se
tienen en C: \Axis, creamos la variable de entorno AXISCLASSPATH y le agregamos los jars
requeridos por axis, la variable de entorno AXISCLASSPATH la agregamos a la variable
CLASSPATH.

set AXIS_HOME=c:\axis
set AXIS_LIB=%AXIS_HOME%\lib
set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;
%AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;
%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-pis.jar;%AXIS_LIB%\xercesImpl.jar

Desde consola ejecutamos el siguiente comando:


org.apache.axis.client.AdminClient.main(rutaDelAxisServlet, rutaArchivoWsdd)
Este comando nos publicara nuestro servicio como Web Service.

2. Otra manera de hacer lo mismo, pero de una manera mas practica es creando una clase de
nombre ConfigureAxis como se muestra a continuación.

En esta clase declaramos una variable de nombre “servidor_axis” que contiene la ruta del Axis Servlet “-
lhttp://127.0.0.1:8080/WebService/servlet/AxisServlet” y tiene el prefijo “-l” para el servicio de localización
en la url.

Además declaramos dos variables mas (cte_unico_deploy, cte_unico_undeploy) para las paths de los
archivo wsdd para deplorar y undeployar el servicio Web.
Después ejecutamos la instrucción org.apache.axis.client.AdminClient.main(new String[]
{servidor_axis,cte_unico_deploy }); Este comando nos publicara nuestro servicio como Web Service.
Podemos verificar de la siguiente manera que nuestro Web service este levantado,. Introducimos
la siguiente url en cualquier navegador:

http://127.0.0.1:8080/WebService/services/Servicios1?wsdl

Deberíamos ver que el navegador muestra algo similar a esto:

La url anterior nos traerá la definicion del Web Service. Teniendo la definición del wsdl ahora podemos
generar un cliente de nuestro Web Service para realizar peticiones.
Generar el Cliente del Web Service

Ahora procedemos a generar un cliente de la siguiente manera: Creamos una clase de nombre
GenerateCliente para ejecutar la instrucción WSDL2Java. Esta instrucción interpretara el wsdl de la Url
del Web Service y generara las clases cliente para poder acceder al Web service.

La sintaxis es la siguiente:
org.apache.axis.wsdl.WSDL2Java.main( new String[] { stringConLaUrlDeLaDefinicionDelWsdl } );

La clase deberá lucir como sigue:

Si nosotros nos damos cuenta, actualmente veremos nuestro proyecto como sigue:
Al correr la clase nos generara las siguientes clases cliente para acceder al Web Service:
• Paquete _1._0._0._127.WebService.services.Servicios1
Servicios1.java
Servicios1Service.java
Servicios1ServiceLocator.java
Servicios1SoapBindingStub.java
• Paquete BeanService
DireccionVO.java

y nuestro directorio quedara de la siguiente manera al dar “Refresh” al proyecto:


Ahora procedemos a probar nuestro cliente, creamos una nueva clase de nombre TestClient para
probar las clases clientes generadas por el WSDL2Java de nuestro Web Service. El codigo es el sigiente:
Al correrla clase la salida en Consola será la siguiente:

Conclusiones

Apache Axis es una implementación concreta, madura y bastante amplia para desarrollar, ejecutar,
testear y administrar Servicios Web implementados en Java. El desarrollo de servicios Web utilizando AXIS
se realiza de una manera sencilla y rápida optimizando los tiempos de desarrollo y deplorado.

El que AXIS sea un proyecto de Yakarta nos da seguridad y confianza a la hora de ejecución de
servicios Web.

Bibliografía

• http://ws.apache.org/axis/java/index.html (Documentación oficial de Axis)


• http://www.omii.ac.uk/docs/2.3.0/reference/apache_axis/wsdd/wsdd.htm

Nota:
Este tutorial fue desarrollado por Consultaría Guenda, nos gustaría que mandaras tus comentarios o
sugerencias acerca de este pequeño curso, a guenda@guenda.com.mx.

Vous aimerez peut-être aussi