Pages

Wednesday, 20 March 2013

Create a Scheduler in Liferay 6


This blog will give an understanding on how  we can write a Scheduler to run a cron job for performing a background job on the portal. This scheduler can be used based on your business requirement.
Step 1 : Create a scheduler class in your portlet and specify the path in the  
                 liferay- portlet.xml

      <portlet>
      <portlet-name>myportlet</portlet-name>
      <icon>/icon.png</icon>
       <scheduler-entry>
       <scheduler-description>
      This scheduler is used to run my own job
      </scheduler-description>
      <scheduler-event-listener-                                                                                                                          class>com.portlet.myportlet.trigger.MyScheduler</scheduler-event-listener-class>
     <trigger>
    <!– <simple>
     <simple-trigger-value>15</simple-trigger-value>
        <time-unit>minute</time-unit>
    </simple> –>
    <cron>
             <cron-trigger-value>0 0 0 * * ?</cron-trigger-value>
    </cron>
    </trigger>
     </scheduler-entry>
 </portlet>
This (<cron-trigger-value>0 0 0 * * ?</cron-trigger-value>) indicates that the scheduler will run every night at 00 hrs.
You can even have a simple scheduler running every hour,minute,seonds by specifying it as

<simple>
<simple-trigger-value>15</simple-trigger-value>
<time-unit>minute</time-unit>
</simple>

Step 2 : Create a Scheduler class.
The class name specified in the liferay-portlet.xml has to be same as scheduler class
import com.liferay.portal.kernel.messaging.Message;
import com.liferay.portal.kernel.messaging.MessageListener;
import com.liferay.portal.kernel.messaging.MessageListenerException;
public class MyScheduler implements MessageListener {
 public void receive(Message arg0) throws MessageListenerException {
//Here is the buisness logic to be written as per your requirement
System.out.println(“scheduler has been started”);
}
}
Based on the entry on the liferay-portlet.xml this will run accordingly.
Hope it helps

No comments:

Post a Comment