您的位置:首页 > 其它

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

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

版本不兼容的原因

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

解决方案

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

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();
}


示例代码

插件的使用就很简单了

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方
法指定版本。

原文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: