miércoles, 1 de julio de 2015

WSO2 AS: Exponiendo fuentes de datos como recursos JNDI.

Como todos los desarrolladores JAVA conocen, JNDI o Java Naming and Directory Interface, es un API de Java que provee de funcionalidades para el descubrimiento de datos y objetos por su nombre. El WSO2 Application Server soporta JNDI a partir de extender la implementación brindada por Tomcat.
En esta entrada queremos mostrarles cómo hacer uso de esta API para exponer las fuentes de datos que hemos creado para nuestros servicios con el objetivo de que también sean accesibles desde las aplicaciones que despleguemos. Veamos cómo se hace.


Paso 1: Crear una fuente de datos.
En este caso usaremos una que ya se ha creado para un servicio de acceso a datos a una BD Oracle.

image

Como se puede apreciar se le ha hecho un test a la configuración para confirmar que se ha realizado de manera correcta.



Paso 2: Exponer esta fuente de datos como un recurso JNDI.
Este segundo paso es realmente sencillo, tal como se muestra en la siguiente imagen.
image

Definimos un nombre para nuestra configuración JNDI y listo. Si se desea que sea consumida desde el exterior debemos marcar la opción “Use Data Source Factory” tal y como se explica en la documentación de la herramienta. Ahora solo basta con salvar la configuración y vamos al paso 3.


Paso 3: Crearemos un servicio JAX-WS con CXF.
Abrimos el WSO2 Developer Studio y nos vamos a su Dashboard, donde seleccionamos la opción “Jax-WS Service Project”.

image


En la ventana que nos sale marcamos la opción de crear un servicio nuevo.

image


Y procedemos a llenar los datos del proyecto.

image


Añadimos la info solicitada para maven.

image  
Y damos Finish.

Por defecto se nos crea una clase con una implementación dummy la cual debemos modificar para ajustar a nuestros requerimientos.

image


Paso 4: Ajuste de la implementación del método.
En este caso creamos un método para obtener dado el nombre de un cliente sus datos. Veamos la siguiente imagen.

image

Como pueden apreciar, tenemos un método “obtenerCliente” al cual se le pasa el nombre como un String y devuelve un objeto de tipo Cliente.

Esta clase tiene un método getDataSource que devuelve un objeto de tipo DataSource que es usado para obtener la conexión a BD y que veremos su implementación en breve.
Luego se prepara la consulta, se ejecuta y se llena el objeto cliente con el resultado de la consulta.
El método para obtener la conexión se muestra a continuación.

image

Este método es sacado de la documentación de WSO2 Application Server, podemos ver como en la última línea especificamos el nombre del recurso JNDI creado en la fuente de datos al inicio de la entrada.

Paso 5: Despliegue en el servidor.
Como lo que hemos implementado es un servicio jax-ws pues debemos desplegarlo en el WSO2 AS, para ello damos clic derecho en el proyecto y seleccionamos la opción “Export Project As Deployable Archive”.
Aquí bien podemos guardar el archivo en alguna ubicación en nuestro filesystem para luego cargarlo desde la consola web del WSO2 AS o podemos copiarlo directamente en [AS_HOME]\repository\deployment\server\webapps tal y como se muestra en la siguiente imagen.

image

Una vez desplegado el servicio lo podemos buscar en la consola web en
“Home>Manage>Applications>List>Applications”

Y entrando a su Dashboard veremos lo siguiente:
image


Paso 6: Pruebas.
Para probar creamos un proyecto en el SOAPUI usando el WSDL 1.1 y le pasamos como nombre “Jorge” y podremos ver la respuesta del servicio.
image

Para aquellos interesados en el fuente, lo pueden descargar desde esta ubicación, clonando el repositorio.

0 comentarios:

Publicar un comentario