Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero en Informática con especialidad en Ingeniería del Conocimiento *.
Fecha de publicación del tutorial: 2010-07-28
Crear una estructura compleja del tipo JavaBean en un servicio web Axis2
0. Índice de contenidos.
- 1. Introducción.
- 2. Entorno.
- 3. Instalación.
- 4. Crear el Servidor.
- 5. Configuración en SOAP UI.
- 6. Crear el Cliente.
- 7. Conclusiones.
1. Introducción
En este tutorial se pretende enseñar a crear otra de las estructuras complejas que se pueden implementar en los servicios web : los tipos compuestos ( En Java serán los JavaBeans)
Por regla general en la programación no solo se limita al uso de los elementos que facilita el lenguaje, sino que en muchos casos se permite la creación de elementos propios.
Un JavaBean es un componente Java que se utiliza para encapsular varios objetos en un único objeto, por asi decirlo haría las veces de una estructura de registro de C, es decir, un tipo que esta compuesto por otro tipos o por tipos simples.
Para que un objeto Java sea considerado un JavaBean requiere cumplir una serie de normas :
- Disponer de un contructor sin argumentos
- Sus atributos deberían de ser accesibles mediente métodos SET / GET
- Seguir las convenciones de nomenclatura estándar (nombre clase, nombres atributos, etc.)
- Implementar de serializable
2. Entorno.
El tutorial está escrito usando el siguiente entorno:
- Hardware: Portátil Asus G50Vseries (Core Duo P8600 2.4GHz, 4GB RAM,320 GB HD).
- Sistema operativo: Windows Vista Ultimate.
- Mozilla Firefox 2.0.0.20
- Apache Tomcat 7.0.0
- Axis2 1.5.1
- Soap UI 3.5
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 Axis2JavaBeanWS

Se creará una estructura del proyecto como la siguiente

PASO 2 : Crear el paquete "com.acme.ws.servidor" sobre la carpeta src

PASO 3 : Crear una clase Java en el paquete anterior llamada Persona que será el JavaBean
Crear una clase con 3 atributos : nombre, apellidos y email.
Nuestro proyecto quedaría asi :

PASO 4 : Crear una clase Java llamada BasicService en el paquete anterior
En este caso se definirán dos métodos que serán los servicios disponibles para los clientes.
En el método "login" se devolverá una cadena con los atributos de nombre y email indicando como que se ha autenticado sin probemas.
En el método "loginEmail" se devolverá un JavaBean que se inicializará si y solamente si coincide el email que se pasa como parámetro
Nuestro proyecto quedaría asi :

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

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

Introducimos el siguiente texto :
Nota : Recordar añadir la línea inicial : <?xml version="1.0" encoding="UTF-8"?>
PASO 8 : Crear el fichero de ensamblado AAR (Axis ARchive)
Para ello exportar el proyecto como si fuera un JAR pero poniendo de nombre Axis2JavaBean.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/Axis2JavaBean?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 "loginEmail"

Para ello introducimos el siguiente email que será reconocido por el servidor : <ser:email>admin@admin.com</ser:email>

PASO 4 : Ejecutamos el test y verificamos la respuesta

PASO 5 : Realizamos un test sobre el método "login"

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 Axis2JavaBeanWSCliente

Se generará una estructura similar a la siguiente

PASO 2 : Copiamos a nivel de raiz el fichero Axis2JavaBean.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 Axis2JavaBean.wsdl
- Si Axis2 esta en el Path : wsdl2java -uri Axis2JavaBean.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 del tipo JavaBean tanto de entrada como de salida.
7. Conclusiones.
Con estas pequeñas aportaciones espero estar ayudar a entender un poco mejor las estructuras complejas en SOAP. En el caso de este tutorial se ha utilizado algo muy habitual cuando uno envía una estructura propia usando 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.
Ya casi tenemos dominado esto de las comunicación SOAP ;-)











