文档章节

QuartzPlugin解决Quartz1.X和2.X版本不兼容问题

绝望的八皮
 绝望的八皮
发布于 2015/02/02 17:55
字数 355
阅读 465
收藏 0

Quartz 2和Quartz 1在class和interface设计上有很大不同,api也有了较大调 整,所以Quzrtz 2并不兼容Quartz 1。QuartzPlugin 的API则屏蔽了2大版本的差异,方便用户使用。

<!-- more -->

版本不兼容的原因

JobDetail 和 CornTrigger 在1.X版本中 都是Class,而在2.X中则为接口。

解决方案

利用反射创建对象,比较粗暴丑类,但是解决问题

<!-- lang: java -->
if (VERSION_1.equals(version)) {
    jobDetail = Reflect.on("org.quartz.JobDetail").create(jobClassName, jobClassName, job.getClass()).get();
    trigger = Reflect.on("org.quartz.CronTrigger").create(jobClassName, jobClassName, jobCronExp).get();
} else {
    jobDetail = Reflect.on("org.quartz.JobBuilder").call("newJob", job.getClass()).call("withIdentity", jobClassName,          jobClassName).call("build").get();
    Object temp = Reflect.on("org.quartz.TriggerBuilder").call("newTrigger").get();
    temp = Reflect.on(temp).call("withIdentity", jobClassName, jobClassName).get();
    temp = Reflect.on(temp).call("withSchedule",
    Reflect.on("org.quartz.CronScheduleBuilder").call("cronSchedule", jobCronExp).get()).get();
    trigger = Reflect.on(temp).call("build").get();
}

示例代码

插件的使用就很简单了

<!-- lang: java -->
QuartzPlugin quartzPlugin = new QuartzPlugin("job.properties","config.properties");
quartzPlugin.add("*/5 * * * * ?", new YourJob());//通过API增加任务
quartzPlugin.version(QuartzPlugin.VERSION_1);//指定Quartz版本

job.properties中可以配置任务,config.properties是quartz原生的配置文件。 除开job.properties中可以配置任务,调用add方法也可以增加任务。 QuartzPlguin默认使用的Quartz 2,如果你使用的是Quartz 1那么调用version方 法指定版本。

<a href="http://kidzhou.me/blog/2015/01/30/quartzpljie-jue-quartz1-dot-xhe-2-dot-xban-ben-bu-jian-rong-wen-ti">原文</a>

© 著作权归作者所有

共有 人打赏支持
绝望的八皮

绝望的八皮

粉丝 392
博文 22
码字总数 10505
作品 2
其它
CTO(技术副总裁)
私信 提问
加载中

评论(2)

开源中国首席打酱油啊哎滴
开源中国首席打酱油啊哎滴
请问这是什么原因?找了好久没找到答案
WARN:oejuc.AbstractLifeCycle:FAILED jfinal: java.lang.ClassCastException: com.jfinal.ext.plugin.config.ConfigPlugin cannot be cast to com.jfinal.plugin.IPlugin
java.lang.ClassCastException: com.jfinal.ext.plugin.config.ConfigPlugin cannot be cast to com.jfinal.plugin.IPlugin
sccot_ding
sccot_ding
有方案解决job 单线程同步问题吗?
JFinal Extensions 3.1.3 发布,JFinal 扩展

JFinal Extensions 3.1.3 发布,这次是一个小版本更新,主要是功能的小改进和bug修复。 Quartzplugin 兼容quartz 1.X 和 2.X 两大版本 Quartzplugin 支持原生quartz.properties配置文件 PoiR...

绝望的八皮
2015/02/03
6.2K
32
Jfinal quartz动态的增、删、暂停、恢复job

Jfinal quartz动态的增、删、暂停、恢复job 得益于和插件可以很方便的在jfinal中配置定时任务,方法如下: 在pom.xml中增加依赖: 在jfinal中配置quartz插件: @Overridepublic void configP...

youthflies
2016/04/22
418
5
WordPress官方推荐的代码高亮插件

今天花了大半天的时间,终于选择好自己心仪的wordpress代码高亮插件,同时它也是wordpress官方推荐的代码语法高亮插件。在选择的过程中,我对比和试用了若干个代码高亮wordpress插件,包括有...

Surjur
2015/04/30
0
1
Quartz 2.x与Spring 动态整合

一、Quartz简介 Quartz是一个由James House创立的开源项目,是一个功能强大的作业调度工具,可以计划的执行任务,定时、循环或在某一个时间来执行我们需要做的事,这可以给我们工作上带来很大...

qllinhongyu
2014/07/25
0
0
jquery easyUI1.3.3在IE9和火狐上面的兼容问题

针对jquery easyUI 1.3.3 在火狐和chrome上可以运行,在IE9中没有效果,但是也不报错的问题。 jquery easyUI 1.3.3中的jquery是2.x版本的,在IE9中不兼容,把其中的jquery文件换成1.x版本的就...

qjf_Troy
2013/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何开发一款以太坊(安卓)钱包系列2 - 导入账号及账号管理

这是如何开发一款以太坊(安卓)钱包系列第2篇,如何导入账号。有时用户可能已经有一个账号,这篇文章接来介绍下,如何实现导入用户已经存在的账号。 导入账号预备知识 从用户需求上来讲,导...

Tiny熊
今天
2
0
intellJ IDEA搭建java+selenium自动化环境(maven,selenium,testng)

1.安装jdk1.8; 2.安装intellJ; 3.安装maven; 3.1 如果是单前用户,配置用户环境变量即可,如果是多用户,则需配置系统环境变量,变量名为MAVEN_HOME,赋值D:\Application\maven,往path中...

不最醉不龟归
今天
3
0
聊聊ShenandoahGC的Brooks Pointers

序 本文主要研究一下ShenandoahGC的Brooks Pointers Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark包括Init Mark(P......

go4it
昨天
3
0
Makefile通用编写规则

#简单实用的Makefile模板: objs := a.o b.o test:$(objs) gcc -o test $^ # .a.o.d .b.o.d dep_files := $(foreach f,$(objs),.$(f).d) dep_files := $(wildcard $(dep_files)) ifneq ($(d......

shzwork
昨天
2
0
《万历十五年》的读后感作文4000字

《万历十五年》的读后感作文4000字: 万历十五年,即1587年,距今已过去432年。在明朝276的历史中,这一年很平淡,并没有什么特别之处。黄仁宇的《万历十五年》一书,有别于其他的历史叙述方...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部