ScheduleJobFactory
/*
* file name: ScheduleJobFactory.java
* copyright: Unis Cloud Information Technology Co., Ltd. Copyright 2015, All rights reserved
* description: <description>
* mofidy staff: zheng
* mofidy time: 2015年8月22日
*/
package com.quartz; import java.util.List; import net.sf.json.JSONObject; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder; /**
* To create scheduler job
*
* @author xpz
* @version [version, Jul 18, 2015]
* @see [about class/method]
* @since [product/module version]
*/
public class ScheduleJobFactory {
private static Log log = LogFactory.getLog(ScheduleJobFactory.class); /***
* create a simpleScheduler job
*
* @param scheduler: the scheduler
* @param jobName: the job name
* @param jobGroup: the job group
* @param triggerName: the trigger name
* @param triggerGroup: the trigger group
* @param ssb: the schedBuilder (eg:SimpleScheduleBuilder ssb =
* SimpleScheduleBuilder.simpleSchedule() .withIntervalInMinutes(1)
* .repeatForever();)
* @param jobClass: the class which implement
* job/StatefulJob(@DisallowConcurrentExecution)
* @param params [explain parameter]
* @return void [explain return type]
* @exception throws [exception type] [explain exception]
* @see [class,class#method,class#member]
*/
public static void createSimpleJob(Scheduler scheduler, String jobName,
String jobGroup, String triggerName, String triggerGroup,
SimpleScheduleBuilder ssb, Class<? extends Job> jobClass,
JSONObject params) {
// build a schedule job
JobDetail jobDetail = JobBuilder.newJob(jobClass)
.withIdentity(jobName, jobGroup)
.build();
// set job name
jobDetail.getJobDataMap().put("name", jobName);
// set job params
if (params != null) {
jobDetail.getJobDataMap().put("params", params);
}
// build a schedule simpleTrigger
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(triggerName, triggerGroup)
.startNow()
.withSchedule(ssb)
.build();
// create a new schedule job
try {
scheduler.scheduleJob(jobDetail, trigger);
}
catch (SchedulerException e) {
log.info("error with create a simple schedule job!", e);
}
} /***
* create a cronScheduler job
*
* @param scheduler: the scheduler
* @param jobName: the job name
* @param jobGroup: the job group
* @param triggerName: the trigger name
* @param triggerGroup: the trigger group
* @param cronExpression: the cron expression
* @param jobClass: the class which implements
* job/StatefulJob(@DisallowConcurrentExecution)
* @param params: the param need to trransfer
* @return void [explain return type]
* @exception throws [exception type] [explain exception]
* @see [class,class#method,class#member]
*/
public static void createCronJob(Scheduler scheduler, String jobName,
String jobGroup, String triggerName, String triggerGroup,
String cronExpression, Class<? extends Job> jobClass,
JSONObject params) {
// build a schedule job
JobDetail jobDetail = JobBuilder.newJob(jobClass)
.withIdentity(jobName, jobGroup)
.build();
// set job name
jobDetail.getJobDataMap().put("name", jobName);
// set job params
if (params != null) {
jobDetail.getJobDataMap().put("params", params);
}
// build a schedule cronTrigger
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity(triggerName, triggerGroup)
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.build();
// create a new schedule job
try {
scheduler.scheduleJob(jobDetail, trigger);
}
catch (SchedulerException e) {
log.info("error with create a simple schedule job!", e);
}
} /***
* delete job from scheduler
* @param scheduler
* @param job
* @param jobGroup [explain parameter]
*
* @return void [explain return type]
* @exception throws [exception type] [explain exception]
* @see [class,class#method,class#member]
*/
public static void deleteJob(Scheduler scheduler, String jobName, String jobGroup){
try {
JobKey jobKey = JobKey.jobKey(jobName, jobGroup);
if(scheduler.checkExists(jobKey)){
scheduler.pauseJob(jobKey);
//Get all Triggers that are associated with the identified job
List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey);
for(Trigger trigger : triggers){
scheduler.pauseTrigger(trigger.getKey());
boolean unscJobFlag = scheduler.unscheduleJob(trigger.getKey());
if(!unscJobFlag)
log.error("error with unschedule job");
}
} //Interrupt all instances of the identified InterruptableJob executing in this Scheduler instance.
if(scheduler.checkExists(jobKey)){
boolean interruptFlag = scheduler.interrupt(jobKey);
if(!interruptFlag)
log.error("error with interrupt the job");
} if(scheduler.checkExists(jobKey)){
boolean delJobFlag = scheduler.deleteJob(jobKey);
if(!delJobFlag)
log.error("error with delete the job");
}
}
catch (SchedulerException e) {
e.printStackTrace();
}
}
}
ScheduleJobFactory的更多相关文章
随机推荐
- Java内存泄漏及对象引用的4种类型
转自: http://www.cnblogs.com/qq78292959/archive/2011/07/25/2116123.html 总结: 引用分类: 强引用,弱引用,软引用,虚引用.虚引用必 ...
- Python安装distribute包
从官网https://pypi.python.org/pypi/distribute/0.6.49#downloads上下载distribute包,解压后进入解压文件的目录下,使用 python se ...
- 编译安装php、nginx
以centos6.6为例 1.安装以及配置php 首先在官网下载源码包http://php.net/downloads.php 这里下载php-7.1.16 .tar.gzcd php-7.1.16 ...
- java学习笔记_BeatBox(GUI部分)
import java.awt.*; import javax.swing.*; public class BeatBox { JFrame theFrame; JPanel mainPanel; S ...
- CSS——◇demo
核心思想:嵌套盒子中的◇超过父盒子的部分隐藏. 第一种写法: <!DOCTYPE html> <html> <head> <meta charset=&quo ...
- [Windows Server 2003] 网页Gzip压缩
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:启用网站GZI ...
- C# 获取表中最大值
; if (db.LPicture.Any()) { // LPicture Newmode = db.LPicture.Where(n => ).FirstOrDefault(); start ...
- 宏基因组扩增子图表解读2散点图:组间整体差异分析(Beta多样性)
散点图 数据点在直角坐标系平面上的分布图.在宏基因组领域,散点图常用于展示样品组间的Beta多样性,常用的分析方法有主成分分析(PCA),主坐标轴分析(PCoA/MDS)和限制条件的主坐标轴分析(CP ...
- WPF在win7运行时报'Initialization of 'System.Windows.Setter' threw an exception.'
写的一个WPF程序,在win10运行好好的,在win7就报'Initialization of 'System.Windows.Setter' threw an exception.' 原来是xaml ...
- xadmin站点管理类
9. Xadmin xadmin是Django的第三方扩展,比使用Django的admin站点更强大也更方便. 文档:https://xadmin.readthedocs.io/en/latest/i ...