如某个的调度是在某个portlet中使用的,则可以使用一面的方法:

1、  编写一个类,实现接口:com.liferay.portal.kernel.messageing.MessageListener。如下图所示。其中的doReceive()方法是定时执行的内容。

基于Portlet的调度任务

2、  在liferay-portlet.xml里面注册这个调度类,添加如下代码:

<scheduler-entry>

<scheduler-event-listener-class>

xxx.cmsnewsgather.NewsGatherMessageListener(上面此类的全路径)

</scheduler-event-listener-class>

       <trigger>

           <simple>

             <simple-trigger-value>15</simple-trigger-value>

             <time-unit>minute</time-unit>

           </simple>

       </trigger>

</scheduler-entry>

scheduler-event-listener-class:里面的类为第一步里面编写的类

simple-trigger-value:里面为调度周期的数值,time-unit为调度周期的单位。上面的意思为每15分钟执行一次。此时间也可以从配置文件中读取。则将此标签完成<property-key>newsgather.gather.time</property-key>,其中的newsgather.gather.time为属性文件(portal.properties)里面配置的值

Time-unit:表示周期的周期可以为:day、hour、minute、second、week这几个单位。

3、  上面的代码即完成了一个调度器的开始,内容为每15分钟执行一次第一步类里面的doReceive()方法。


相关文章: