Today we will discuss about Schedular in Liferay. Sometime we have a situation in which we have to perform a task repeatedly after a certain period of time.Ex- Send a mail every week.
Liferay provide a simple way to achieve this.We create schedular class and provide entry of timing in liferay-portlet.xml. Time for schedular can be define by 3 ways:-
1)Using Liferay Feature
Ex- <simple>
<simple-trigger-value>1</simple-trigger-value>
<time-unit>minute</time-unit>
</simple>
Here in time unit we mention minute and in simple trigger value we mention 1 .This means this job run in each minute.
2)Using Property file
Ex- <cron>
<property-key>everyThirtySecond </property-key>
</cron>
We define key and cron expression in portlet.properties file like everyThirtySecond = 0/30 * * * * ?
3)Using Cron Expression Directly
Ex- <cron>
<cron-trigger-value>0/15 * * * * ?</cron-trigger-value>
</cron>
This job runs in every 15 seconds.
Note:- For Cron Trigger Expression you may refer here.
So lets start this step by step:-
Step 1:-Create Liferay Project and Portlet
Inside eclipse IDE Click on File->New->Liferay plugin project and give the project name as schedular and click finish. After that Right Click on your project and click on New than click on Liferay Portlet. Provide class name as Demo and select MVCPortlet and click finish.
Note:-You can check the snapshots in my blog on Portlet Configuration Page in Liferay.
Step 2:-Create Schedulars
Inside com.test package create 3 classes that implements MessageListener inteface and provide the definition of receive method.
FirstSchedular.java
SecondSchedular.java
ThirdSchedular.java
Step 3:-Provide timing in liferay-portlet.xml
Open liferay-portlet.xml and paste this:-
Explanation:-
Here we provide the entries of all 3 Schedulars.
Step 4:-Create portlet.properties
Explanation:-
Here we provide the entries of all 3 Schedulars.
Step 4:-Create portlet.properties
Inside docroot/WEB-INF/src create portlet.properties and paste this:-
everyThirtySecond = 0/30 * * * * ?
because second schedular take value from property file.
Step 5:-Check output
Project Structure
everyThirtySecond = 0/30 * * * * ?
because second schedular take value from property file.
Step 5:-Check output
Project Structure