Crear una estructura compleja del tipo Array en un servicio web Axis2

1
24321

Crear una estructura compleja del tipo Array en un servicio web Axis2

0. Índice de contenidos.

1. Introducción

En este tutorial se pretende enseñar a crear la primera de las estructura complejas que se pueden implementar
en los servicios web : los arrays

Hasta el momento casi todos los servicios web utilizan como parámetros o bien devuelven tipos simples (recordar
que venían definidos por el XML Schema) como pueden ser un int, double, String, etc. Pero hay veces en que se
necesitan devolver algunas estructuras más complejas como puede ser un array o bien un Java bean

El array es la estructura compleja más utilizada en la programación y se clasifica en base a sus dimensiones :

  • Array unidimensional (Vector) -> Es decir contiene N Elementos
  • Array multidimensional (Matriz) -> Es decir contiene N1 * N2 * … * Nm donde cada N<num> es una dimensión

Nota : Los arrays casi siempre requieren que se establezca la dimensión durante su construcción, en caso de que
no se sepa el tamaño previo normalmente viene dado por su inicialización

Los elementos que componen un array deberían de ser alguno de los considerados como válidos (tipos simples , Java Beans , etc),
aunque algunas veces estos son heterogéneos y se convierten en un cajón desastre donde se guarda todo, es decir, donde
cada uno de los elementos pertecene a un tipo diferente

En caso de SOAP además permite distinguir dos tipos de arrays :

  • Parcial : Array que no se encuentra totalmente polado por lo que el resto de valores serñan del tipo null
  • Disperso : Array donde se inicializan las posiciones no contiguas del array

La utilización de estos dos tutoriales no será explicado en este tutorial 😉

2. Entorno.

El tutorial está escrito usando el siguiente entorno:

3. Instalacion.

Para la realización de este tutorial ser requiere :

1) Tener instalada servidor de aplicaciones Apache Tomcat (En mi caso uso la versión 7.0)

2) Tener la versión binaria de Axis2 (En mi caso uso la versión 1.5.1) descargada y descomprimida en un directorio

3) Tener la versión WAR de Axis2 (En mi caso uso la versión 1.5.1) desplegada en el Tomcat

4) Tener instalada la herramienta SOAP UI

Nota : Utilizaremos para su desarrollo la herramienta Eclipse

4. Crear el Servidor

PASO 1 : Crear un proyecto Java llamada Axis2ArrayWS

Se creará una estructura del proyecto como la siguiente

PASO 2 : Crear el paquete «com.acme.es.servidor» sobre la carpeta src

PASO 3 : Crear una clase Java llamada BasicService

PASO 4 : Crear un método que utilize como parámetro un array

PASO 5 : Crear un método que devuelva un array

Al final la clase quedará de la siguiente forma :

PASO 6 : Crear la carpeta META-INF a nivel de la carpeta src

PASO 7 : Crear dentro de la carpeta META-INF el descriptor de servicio : services.xml

Introducimos el siguiente texto :

PASO 8 : Crear el fichero de ensamblado AAR (Axis ARchive)

Para ello exportar el proyecto como si fuera un JAR pero poniendo de nombre Axis2Array.aar

Nota : No incluir .classpath ni .project

Arrancar Tomcat si esta parado

PASO 9 : Copiar el fichero AAR en <CATALINA_HOME>\webapps\axis2\WEB-INF\services

PASO 10 : Verificar en la consola de Tomcat la inclusión de este servicio

PASO 11 : Verificar el servicio desde la consola de administracion de Axis : http://localhost:8080/axis2/services/listServices

PASO 12 : Obtenemos el WSDL del servicio : http://localhost:8080/axis2/services/Axis2Array?wsdl

Guardamos el fichero anterior que vendrá dado en formato XML por formato WSDL

5. Probar el servidor con SOAP UI

PASO 1 : Cargamos la herramienta

PASO 2 : Creamos un proyecto nuevo con la URL del WSDL anterior

PASO 3 : Realizamos un test sobre el método de paso de parámetros

Para ello introducimos tantos <ser:words>TEXTO </ser:words> como elementos que queremos
que tenga el array (Recordar secuencialidad)

PASO 4 : Ejecutamos el test y verificamos la respuesta

PASO 5 : Realizamos un test sobre el método que devuelve un array

PASO 6 : Ejecutamos el test y verificamos la respuesta

Con esto tendremos probado nuestro Servidor 😉

6. Crear el cliente

PASO 1 : Creamos un proyecto Java llamada Axis2ArrayWSCliente

Se generará una estructura similar a la siguiente

PASO 2 : Copiamos a nivel de raiz el fichero Axis2Array.wsdl

PASO 3 : Generamos el Stub del cliente con la herramienta Axis2

Para ellos nos situamos por consola en el directorio del proyecto y ejecutamos la siguiente instrucción

  • Si Axis2 NO esta en el Path : %AXIS2_HOME%\bin\wsdl2java -uri Axis2Array.wsdl
  • Si Axis2 esta en el Path : wsdl2java -uri Axis2Array.wsdl

PASO 4 : Refrescamos el proyecto

Se habrán creado dos clases que nos permitirán comunicarnos con el servidor

PASO 5 : Incluir las librerías de Axis2

Con el botón derecho del ratón sobre el proyecto Properties -> Java Build Path , pestaña de
Libraries y pulsar sobre «Add Externar JARs»

PASO 6 : Crear un paquete «com.acme.ws.cliente»

PASO 7 : Crear una clase PruebaCliente.java

Esta clase dipondrá de dos métodos para realizar la llamada a los dos servicios

PASO 8 : Ejecutar la clase

Con esto habriamos conseguido tener un servicio web en el que se utiliza la estructura
compleja de array

7. Conclusiones.

Espero haberos podido ayudar a entender un poco mejor las estructuras complejas de tipo array
en SOAP. Se ha tratado de que el ejemplo sea lo más claro posible para facilitar su entendimiento
sin entrar en ningúna complejidad a la hora de crear los servicios proporcionados.

Como habéis podido ver, para poder implementar un servicio web (Cliente y Servidor) hay que realizar
muchas acciones, pero por suerte para nosotros se puede decir que cambian muy poquitas cosas a la hora
de generar otros servicios web diferentes. Mucho ánimo con esto de la comunicación SOAP 😉

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here