文档章节

Liferay 6.1开发学习(十一):调度器-定时任务【转】

攻城狮不是猫
 攻城狮不是猫
发布于 2015/07/02 09:28
字数 896
阅读 25
收藏 0

一、基于Portlet的调度

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

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

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表示周期的周期可以为:dayhourminutesecondweek这几个单位。

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

二、基于servlet的调度

:此方法适用于lifery6.0.6,不适用于liferay6.1.x

1、同上,编写一个实现com.liferay.portal.kernel.messageing.MessageListener的类。

2、在相应工程下面的web.xml里面添加servlet的注册信息,如下:

<servlet>
    <servlet-name>Lucene Servlet</servlet-name>      
<servlet-class>
xx.xx.servlet.xxxServlet
</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

3、在上面的servletinit(ServletConfig servletConfig)方法里面添加如下内容:

super.init(servletConfig);
SchedulerEntry schedulerEntry = new SchedulerEntryImpl(); 
       schedulerEntry.setEventListenerClass(
                  xxxMessageListener.class.getName());
       schedulerEntry.setTimeUnit(TimeUnit.MINUTE);
       schedulerEntry.setTriggerType(TriggerType.SIMPLE);
       schedulerEntry.setTriggerValue(15); 
    try {
SchedulerEngineUtil.schedule(
schedulerEntry, PortalClassLoaderUtil.getClassLoader());
}

其中的xxxMessageListener为第一步编写的类。分别在setTimeUnitsetTriggerValue里面设置调度的周期单位和时间。

三、两者的区别及适用情况

对于方法一是推荐使用的,但是有时候我们可能需要在程序中来设置调度周期,但是方法一需要在liferay-portlet.xml里面将调度的周期和时间就固定了。我们需要做一下变通,如在新闻采集的自动采集的代码里面就使用的方法一,在liferay工程中的日程管理也是使用了此功能。此方法适用于下面情况

§ 需要在程序中设置调度周期

§ 但是对于时间的精确度需求不是非常高,可以有一定的误差

如新闻采集的自动采集,如果我们需要对一个网站进行新闻的自动采集,我们一般将这个周期设置成几个小时重复执行一次,我们可以在liferay-portlet.xml里面设置成这个调度是10分钟或者30分钟执行一次检查,这个时候我们在doReceive()里面调用的代码不是具体的执行采集的代码,而是检查现在的这个时间是否在下调度周期中,如果是则执行采集,如果不是则跳过。

对于方法二而言,适用于以下情况:

§ 需要执行调度的代码不明确属于某一个portlet

§ 需要精确控制时间。

只要满足上面的任何一个条件,都适合使用方法二,方法二里面的调度时间可以从数据库中读取也可以从配置文件中读取。

© 著作权归作者所有

攻城狮不是猫
粉丝 5
博文 57
码字总数 86313
作品 0
杭州
程序员
私信 提问
taobao-pamirs-schedule-2.0源码分析—核心流程

核心的流程时序图如下。 如上图所示,淘宝调度管理器在创建后就会执行一系列初始化过程,并且启动一些定时线程。具体流程描述如下: 1.创建定时调度器。 2.从配置中心加载任务配置信息。 3....

杨武兵
2016/03/09
236
0
Liferay Portal 6.1 CE 发布

Liferay 的新版本旗舰软件产品 Liferay Portal 6.1 CE 今天发布![下载][快速开始] Liferay 的产品团队和开发团队与我们优秀的社区协调一致,历时数月致力于 6.1 的发布,现在终于大功告成。...

红薯
2012/02/24
1K
4
基于spring+quartz的分布式任务调度

学习地址:http://www.roncoo.com/course/view/e2b459016e2e477dbd5d67c8b23fe86d 课程介绍 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相...

小红牛
2018/04/19
0
0
分布式调度平台 XXL_Job

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/wxb141001yxx/article/details/93927459 Where? 发展历史 特性发展 ...

Jessica-小波
06/28
0
0
Youyinnn/Cron4jTranslation

Cron4j : A pure Java cron-like scheduler 创立时间:2017年8月20日13:35:01 官方文档地址:http://www.sauronsoftware.it/projects/cron4j/ Maven依赖: 前言: 这是一篇针对cron4j官方英文...

Youyinnn
2017/08/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 文件类操作API与IO编程基础知识

阅读目录: https://www.w3cschool.cn/java/java-io-file.html Java 文件 Java 文件 Java 文件操作 Java 输入流 Java 输入流 Java 文件输入流 Java 缓冲输入流 Java 推回输入流 Java 数据输入...

boonya
24分钟前
2
0
SDKMAN推荐一个好

是在大多数基于Unix的系统上管理多个软件开发工具包的并行版本的工具。它提供了一个方便的命令行界面(CLI)和API来安装,切换,删除和列出sdk相关信息。以下是一些特性: By Developers, fo...

hotsmile
48分钟前
8
0
什么是 HDFS

是什么? HDFS 是基于 Java 的分布式文件系统,允许您在 Hadoop 集群中的多个节点上存储大量数据。 起源: 单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称...

Garphy
51分钟前
5
0
一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
今天
10
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部