Archivo

Entradas Etiquetadas ‘liferay’

Liferay 5.2 + DWR

jueves, 26 de marzo de 2009 Sin comentarios

Continuando con el desarrollo de portlets en Liferay, me topé con la necesidad de investigar sobre respuestas asíncronas de parte del servidor a los clientes. Consultando con profesores y amigos, me sugirieron leer sobre COMET, una técnica muy similar a AJAX con la diferencia que envia respuestas sin que el cliente las solicite.

Así encontré DWR (Direct Web Remoting: directwebremoting.org) una librería de JAVA, que permite la interacción asíncrona del servidor (Java) con los clientes (javascript). Aquí más sobre DWR (http://directwebremoting.org/dwr/overview/dwr)

Busqué en el sitio de Liferay más información sobre DWR y portlets, pero no me ayudó mucho, pues en la wiki dan una explicación muy general y no está actualizado con la última versión de liferay 5.2.x. Encontré un artículo muy bueno en la web (link) de como hacer una aplicación web utilizando DWR, me ayudó mucho pero no lo explicaba con liferay. Así que me tocó hacer un híbrido entre este articulo, la wiki de liferay, el sitio de DWR y sobre todo mucha prueba y error.

Aquí los pasos a seguir:

WEB-INF Liferay

WEB-INF Liferay

  1. Descargar la última versión estable de DWR (dwr.jar) (link)
  2. Copiar el jar en la carpeta WEB-INF->lib (ver Fig. 1)
  3. Configurar dwr en liferay
  4. Abrir el archivo web.xml que etsá en la carpeta WEB-INF (ver Fig. 1)
  5. Agregar lo siguiente:
  6. <servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <display-name>DWR Servlet</display-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    <init-param>
    <param-name>debug</param-name>
    <param-value>true</param-value>
    </init-param>
    </servlet>

    <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>

  7. En esa misma carpeta WEB-INF crear un archivo dwr.xml
  8. Copiar lo siguiente por el momento
    <dwr>
    <allow>
    <!– define la clase de servicios que se va a publicar mediante DWR –>
    <!– defines the service class to share across DWR –>
    <create creator=»new» javascript=»JDate»>
    <param name=»class» value=»java.util.Date»/>
    </create>
    </allow>
    </dwr>
  9. Probar el DWR en http://localhost:<puerto>/dwr
  10. Debería salir una página con el link de JDate, si es así perfecto!
  11. Luego Creamos el portlet (yo utilizo netbeans, pero también se lo puede hacer con eclipse)
  12. Estos 2 IDEs crean todo lo necesario de un portlet, claro deben tener instalado el plugin de liferay para netbeans o eclipse, como sea el caso (Para eclipse existe Lomboz pero hasta la versión 4.0 de Liferay).
  13. Crear Clases necesarias (dependiendo de la necesidad u objetivo del portlet)
  14. Compilar las clases

    Carpeta Liferay + tomcat

    Carpeta Liferay + tomcat

  15. Copiar todo el paquete de clases generado en la compilación y pegarlo en la carpeta shared–>classes (ver Fig.2)
  16. Luego agregar dicha clase en el archivo DWR que creamos en el paso 7
    <create creator=»new» javascript=»<nombre de la clase>»>
    <param name=»class» value=»<paquete>.<nombre de la clase>»/>
    </create>
    <convert converter=»bean» match=»<paquete>.*»/>
  17. El bean es solo si se necesita utilizarlo, sino no es necesario.
  18. Ejecutamos el paso 8
  19. Y si sale el link de nuestra clase, todo está perfecto.
  20. Ahora lo que resta es llamar desde javascript a nuestro codigo java.
    En mi caso:
    SchedulerService.getSchedule(id,showScheduler);

    En donde SchedulerService es el nombre de la clase y getShedule es el método declarado en la clase anteriormente mencionada. Este método solo recibe un parámetro, pero al utilizar DWR se le debe pasar también una función (callback), en este caso showScheduler. Esta función callback recibe como parámetro la respuesta que retorna el metodo java, y es la que se encargará de manipular la información (parsear, mostrar, etc.)

  21. Desde view.jsp incluimos al js antes creado y listo.

Un poco largo, pero si funciona 🙂

Liferay 5.2.2 (configuración de base de datos)

martes, 3 de marzo de 2009 4 comentarios

Hoy instalé en mi computador la nueva versión del Liferay (5.2.2), el paquete que incluye tomcat, y como algunos ya sabemos, por default al correrlo por primera vez, se crea una base de datos de prueba utilizando el motor HSQL.

Este motor no es recomendable tenerlo en un servidor, solo se lo recomienda para pruebas, es por esto que Liferay permite hacer conexiones con oracle, mysql, postgres y otros.

En mi caso probaré con mysql.

En la versión 5.1.2 del liferay fue muy fácil encontrar el archivo de configuración para cambiar la base de datos, estaba en: tomcat\conf\Catalina\localhost\ROOT.xml en donde solo se comentaba la sección de HSQL y se habilitada la del mysq y todo funcionaba perfectamente.

Ahora, con la versión 5.2.x la estructura ha cambiado un poco, han incluido un archivo portal.properties que está dentro de (tomcat\webapps\ROOT\WEB-INF\lib\portal-impl.jar) ahí se especifican ciertos parámetros para lograr que funcione este portal. Uno de los parámetros es el motor de base de datos, pero como modificarlo si está dentro del jar? Pues muchos opinarán: «Cambiando la extensión del jar por zip, descomprimir, modificar, comprimir y volver de zip a jar», pero en lo personal es una opción sucia que en realidad no sé si funcione.  Bueno, lo optimo es crear un archivo llamado «portal-ext.properties» en ((tomcat\webapps\ROOT\WEB-INF\classes) y solo agregar lo siguiente.

 

jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.default.username=user
jdbc.default.password=pass

Una vez creado este archivo, o antes, debemos crear la base en mysql y asignarle si deseamos un user y pass.
create database lportal character set utf8;
use lportal;
create user user;
set password for ‘user’@’localhost’ = password(‘pass’);
grant all privileges on *.* to ‘user’@’localhost’ identified by ‘pass’
De ahí, levantamos el tomcat y esperamos que todo se instale!

Desarrollo de portlets para Liferay

jueves, 19 de febrero de 2009 2 comentarios

Luego de 2 semanas de buscar en la web como crear portlets para Liferay, por fin he encontrado una manera fácil de hacerlo. 

He encontrado 2 formas de hacerlo, la primera con la ayuda de un IDE y la segunda directamente con el SDK de Liferay. esta última no he probado, opté por la primera opción y resultó tras varios intentos.

Al principio me bajé el Liferay 5.1.2 con el tomcat incluido, lo corría (bin/startup.bat) y todo perfecto, pero cómo incluir mis propios portlets? Encontré lomboz una herramienta basada en eclipse, que permite crear los portlets de manera muy rapida y sencilla. Mis primeros intentos con este IDE no fueron exitosos, pues no me di cuenta que estaba desarrollado para Liferay 4.1.0, 4.2.0 y 4.3.0, y yo tenía 5.1.2. Entonces, al darme cuenta cambié la versión utilicé la 4.3.0 y todo funcionó 🙂 pero yo no quería esa versión 🙁

Busqué en la web como crear portlets para la versión 5.1.2 y encontré algunas formas, no triviales por cierto, y decidí hacer la prueba con el portlet que ya había creado para la versión 4.3.0 y lo probé en mi liferay 5.1.2 y todo funcionó 🙂

Seguiré utilizando lomboz para crear los portlets, y luego de compilados, los muevo a la carpeta ROOT del tomcat (que ya incluye Liferay).

Aquí algunos links interesantes:

Descargar Liferay 5.2.1: http://www.liferay.com/web/guest/downloads/portal
Documentación Liferay 4.2: http://www.liferay.com/web/guest/community/documentation/4_2
Creación de Portlets para Liferay con Lomboz: http://lomboz.objectweb.org/liferay_demo.php

Categories: none Tags: , , , ,
Ir a la barra de herramientas