Ejecuciones automaticas en Liferay
De Dos Ideas.
Crear una tarea automática (CRON)
Para crear una tarea que se ejecute automáticamente vamos a valernos de un portlet que vamos a desplegar en el portal.
- 1- Configurar el CRON en el archivo liferay-portlet.xml que se encuentra en la carpeta WEB-INF de nuestro proyecto:
<portlet>
<portlet-name>NombreDelPortlet</portlet-name>
<icon>/icon.png</icon>
<scheduler-entry>
<scheduler-description>descripcion</scheduler-description>
<scheduler-event-listener-class>com.MiClaseCron</scheduler-event-listener-class> <!- Aca va la clase que contiene el CRON en el proyecto(con la lógica que ejecuta) ->
<trigger> <!- Configuración del tiempo para que corra el CRON ->
<simple-trigger-value>15</simple-trigger-value>
<time-unit>minute</time-unit>
</trigger>
</scheduler-entry>
</portlet>
- 2- Creamos la clase CRON con la lógica que ejecutará (es necesario que implemente la interfaz MessageListener de Liferay):
package com.MiClaseCron;
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageListener;
import com.liferay.portal.kernel.messaging.MessageListenerException;
public class NotificacionCron implements MessageListener {
public void receive(Message arg0) throws MessageListenerException {
//Aca va la logica que se ejecutará.
}
}
En caso de usar Spring, tener en cuenta que el CRON al momento en que corre deberá levantar el contexto, lo cual podría traernos algún dolor de cabeza..