Get it on Google Play

Como crear Portlets como componentes OSGI para Liferay 7

28-12-2015
 

Liferay 7 sigue permitiendo crear portlets con el SDK de toda la vida, de esta manera sigue existiendo una compatibilidad con versiones anteriores( Que nadie se asuste 😀 !!! ). Pero Liferay lanza su “Liferay’s Module Framework” para la creación de plugins, mucho mas potente que el antiguo SDK.

Para crear Portlets como componentes OSGI lo primero que tendremos que instalar es la herramienta Blade que será nuestro apoyo a la hora de crear y desplegar componentes. Como esto no podía ser fácil, para instalar Blade primero nos tendremos que instalar Jpm(Otro gestor de paquetes). En Linux:

Instalando Jpm en Ubuntu Linux

#instalamos Jpm(A mi como pone en su web no me ha funcionado)
wget http://www.jpm4j.org/install/script
sudo 777 script
sudo ./script

Instalando Blade

Para instalar blade podemos hacerlo descargando el Jar desde la siguiente web https://liferay-test-01.ci.cloudbees.com/job/blade.tools . En mi caso, también he tenido que cambiarle el nombre:

#descargando blade.jar
wget https://liferay-test-01.ci.cloudbees.com/job/blade.tools/lastSuccessfulBuild/artifact/com.liferay.blade.cli/generated/com.liferay.blade.cli.jar
mv com.liferay.blade.cli.jar blade.jar

#instalando blade.jar
sudo jpm install -fl blade.jar

Creando nuestro primer portlet

Ahora que ya tenemos blade instalado podemos crear nuestro primer proyecto llamado ‘myportlet'(Por aquello de ser originales):

blade create myportlet

Esto nos genera una estructura de proyecto típica de Maven y Gradle. También nos crea nuestro primer portlet(Ojo a añadirle la propiedad ‘javax.portlet.display-name’, no viene por defecto y sin ella tu portlet no tiene nombre):

package myportlet;

import javax.portlet.Portlet;

import org.osgi.service.component.annotations.Component;

import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet;

@Component(
	immediate = true,
	property = {
		"javax.portlet.display-name=Lostsys Portlet",
		"com.liferay.portlet.display-category=category.sample",
		"com.liferay.portlet.instanceable=true",
		"javax.portlet.security-role-ref=power-user,user",
		"javax.portlet.init-param.template-path=/",
		"javax.portlet.init-param.view-template=/view.jsp",
		"javax.portlet.resource-bundle=content.Language"
	},
	service = Portlet.class
)
public class MyportletPortlet extends MVCPortlet {

}

Vemos que los nuevos componentes carecen de los ficheros de configuración XML que son sustituidos por anotaciones en la classe generada.

El proyecto viene acompañado de su fichero de configuración para compilar con Gradle y el fichero ‘bnd.bnd'(Para añadirle la configuración típica de todos los módulos OSGI).

Compilando y desplegando

Ya con todo, solamente nos queda compilar con Gradle y hacer el despliegue con Blade.

gradle build

blade deploy build/libs/Myportlet-1.0.0.jar

Para que el despliegue funcione debéis tener arrancado una instalación de Liferay. Blade se encarga de reconocer que existe una instalación de Liferay arrancada y hace el despliegue. El único feedback que recibiremos del despliegue es un triste ‘Installed or updated bundle XXX'(Liferay no dice ni mu…).

Una vez hecho el despliegue nuestro portlet estará listo en nuestra instalación de Liferay:

Liferay 7 OSGI Portlet

Liferay 7 OSGI Portlet

Esperemos que Liferay siga trabajando para que el desarrollo de componentes sea mas fácil cada día 😀 . La versión 7 de Liferay tiene muy buena pinta y seguro que nos dará grandes alegrías.

Interesado en formación Liferay?

 

Leave a Reply

© Albert Coronado Calzada