Usando una base de datos externa en 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.
... y en la sección "Portal Dependency Jars" hacemos clic en "Add..."
... para agregar los siguientes paquetes:
Ese archivo
El contenido del archivo xml será el siguiente (una configuración propia de Spring con JDBC)
Primero, la interfaz DAO
La implementación...
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:
Esperamos que cocine... y, desde el portal lo agregamos.
.. y listo!
Y como estamos en Liferay, todos los tags soportan Responsive.
Naturalmente, pueden cualquier base de datos. Esto es un mero ejemplo.
https://java.net/projects/apuntes/downloads/download/web/portlets/sample-portlet.tar.gz
Espero que les sirva. Bendiciones a todos!
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 archivodocroot/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
$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 llamadoSamplePortlet
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 > deployEsperamos 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 vahttps://java.net/projects/apuntes/downloads/download/web/portlets/sample-portlet.tar.gz
Espero que les sirva. Bendiciones a todos!
Comentarios
Publicar un comentario
Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups
Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/