Get it on Google Play

Compartiendo servicios entre portlets, themes y hooks Liferay

10-12-2014
 
Compartir servicios Liferay

Compartir servicios Liferay a lo simpático

Liferay nos permite compartir servicios entre portlets y hooks a través de la classe de utilidad ‘com.liferay.portal.template.UtilLocator‘. Básicamente en el Portlet que expone el servicio deberemos definir una interfície que exponga el servicio y una clase que lo implemente.

Antes de empezar, deberemos configurar el fichero web.xml para poder exponer el servicio:

<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<context-param>
       		<param-name>portalContextConfigLocation</param-name>
       		<param-value>/WEB-INF/applicationContext.xml</param-value>
    	</context-param> 
	<listener>
		<listener-class>com.liferay.portal.kernel.spring.context.PortletContextLoaderListener</listener-class>
	</listener>
</web-app>

Después deberemos configurar en el fichero ‘applicationContext.xml'(Configurado en web.xml) donde enumeraremos los distintos servicios. En este ejemplo, compartiremos la interfície TestTool y la implementaremos por TestToolImpl:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<bean id="com.lostsys.test.TestTool" class="com.lostsys.test.TestToolImpl" />
</beans>

Definimos la interfície del servicio(Que tendrá un método getTestCount):

package com.lostsys.test;

public interface TestTool {
	public int getTestCount();
	}

Definimos la implementación del servicio:

package com.lostsys.test;

public class TestToolImpl implements TestTool {

	public int getTestCount() {
		return 155;
		}

	}

A continuación podemos hacer uso del servicio en nuestros themes Liferay:

#set ($testCount = $utilLocator.findUtil("test-service-portlet","com.lostsys.test.TestTool") )

El número de counts es $testCount.getTestCount()

Y también podemos hacer uso en nuestros portlets si previamente nos han compartido la interfície o a través de Reflection(Esto de reflection lo hablaremos en futuros posts).

TestTool tt=(TestTool) UtilLocator.findUtil("test-service-portlet","com.lostsys.test.TestTool")

System.out.println( “El número de counts es: ”+tt.getTestCount() );

Interesado en formación Liferay?

 

Leave a Reply

© Albert Coronado Calzada