Usando una base de datos externa en Liferay a través de Spring

Usando una base de datos externa con Liferay a través de Spring
Todos los aplicativos (portlets) de Liferay, usando a través del Service Builder, utilizan la misma base de datos donde se configuró el servidor. Si deseamos utilizar otra base de datos ya existente, podemos hacer una integración en nuestro portlet. En este post veremos cómo hacer esta integración, pero en esta manera no usaremos el Service Builder.

Para comenzar, crearemos un portlet común y corriente (o usamos uno ya existente). Para mi ejemplo crearé un portlet llamado "Sample", utilizaré la base de datos de Apache Derby que viene con el JDK llamado "Sample" y listaré el contenido de la tabla PRODUCT.

Mis recursos:


  • JDK 8 (sí, me está resultando el Liferay con Java8)
  • Eclipse Kepler + Liferay Plugin (se puede configurar desde el Marketplace de Eclipse. También funciona con Eclipse Juno)
  • Tomcat 7 preconfigurado con Liferay 6.2

Agregando las bibliotecas necesarias

Lo común es agregar más bibliotecas al proyecto, pero el Liferay ya cuenta con sus propias bibliotecas de Spring (porque buena parte está hecho con Spring), así que solo le decimos que vamos a necesitar las bibliotecas compartidas del framework. Para ello seleccionamos el archivo docroot/WEB-INF/liferay-plugin-package.properties


... y en la sección "Portal Dependency Jars" hacemos clic en "Add..."

... para agregar los siguientes paquetes:

  • spring-asm
  • spring-beans
  • spring-context
  • spring-core
  • spring-expression
  • spring-jdbc
  • spring-web
  • spring-web-portlet
  • spring-web-servlet
También necesitamos la biblioteca cliente para la base de datos. Debemos agregarlo manualmente a la carpeta $TOMCAT_HOME/lib/ext antes de iniciar el Liferay. Los archivos que vamos a cargar son derby.jar y derbyclient.jar que lo podemos obtener de $JAVA_HOME/db/lib

Crear configuración Spring con conexión a base de datos

Para configurar el Spring, necesitamos crear un archivo llamado applicationContext.xml dentro de WEB-INF y tendrá el siguiente contenido:

Ese archivo my-dao-spring.xml lo crearemos dentro de la carpeta src/META-INF. Si no existe la carpeta META-INF, lo creamos.
El contenido del archivo xml será el siguiente (una configuración propia de Spring con JDBC)


Cargar archivo Spring en el portlet

Necesitamos que la configuración del spring sea cargado con toda la aplicación. Para ello debemos configurar el archivo web.xml con lo siguiente:




Las clases DAO

Ahora nos toca crear las clases DAO que se usarán por el Spring. Esto es puro POJO a manera de ejemplo:
Primero, la interfaz DAO


La implementación...


El Portlet

Crearemos un Portlet tipo MVCPorlet llamado SamplePortlet dentro de la categoría Sample, y este será el código:



Y vemos que la implementación es bastante simple. Solo llamamos al SpringContext, obtenemos el DAO que hemos creado, y usamos su método. Esto es lo bueno de usar patrones: todo está ordenado y no necesitamos de enredarnos con códigos que no le corresponde.

Y en nuestro JSP usaremos taglibs de liferay para mostrar la lista pero en una tabla y de manera paginada:



Desplegando

Desplegamos el proyecto desde el menú contextual > Liferay > SDK > deploy


Esperamos que cocine... y, desde el portal lo agregamos.

.. y listo!


Y como estamos en Liferay, todos los tags soportan Responsive.


No olvidar iniciar la base de datos...!!

... porque en este ejemplo hemos usado el Apache Derby que viene con el JDK, falta iniciar el servicio. Yo lo inicié desde el NetBeans.


Naturalmente, pueden cualquier base de datos. Esto es un mero ejemplo.

El código fuente

Y este post no termina si no comparto el código fuente utilizado. Aquí les va

https://java.net/projects/apuntes/downloads/download/web/portlets/sample-portlet.tar.gz

Espero que les sirva. Bendiciones a todos!

Comentarios

Entradas más populares de este blog

UML en NetBeans

Cambiar ícono a un JFrame

RESTful... la forma más ligera de hacer WebServices (Parte 1)