springmvc+easyui实现界面控制quartz的暂停、恢复、修改、添加
来源:互联网 发布:破解版软件大全 编辑:程序博客网 时间:2024/06/05 18:31
1、把quartz的表达式信息放到数据库中:
package cn.edu.nuc.entity;public class ScheduleJob {private Integer id; /** 任务id */ private String jobId; /** 任务名称 */ private String jobName; /** 任务分组 */ private String jobGroup; /** 任务状态 0禁用 1启用 2删除*/ private int jobStatus; /** 任务运行时间表达式 */ private String cronExpression; /** 任务描述 */ private String desc; public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getJobId() {return jobId;}public void setJobId(String jobId) {this.jobId = jobId;}public String getJobName() {return jobName;}public void setJobName(String jobName) {this.jobName = jobName;}public String getJobGroup() {return jobGroup;}public void setJobGroup(String jobGroup) {this.jobGroup = jobGroup;}public int getJobStatus() {return jobStatus;}public void setJobStatus(int jobStatus) {this.jobStatus = jobStatus;}public String getCronExpression() {return cronExpression;}public void setCronExpression(String cronExpression) {this.cronExpression = cronExpression;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public ScheduleJob() { super(); } public ScheduleJob(String jobId, String jobName, String jobGroup, int jobStatus, String cronExpression, String desc) { super(); this.jobId = jobId; this.jobName = jobName; this.jobGroup = jobGroup; this.jobStatus = jobStatus; this.cronExpression = cronExpression; this.desc = desc; }}
2、spring集成quartz
quartz.xml
<bean name="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> </bean>使用quartz的本身调度(集成Job类)
import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import cn.edu.nuc.entity.ScheduleJob;public class QuartzJobFactory implements Job{@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {// TODO Auto-generated method stub System.out.println("任务成功运行"); ScheduleJob scheduleJob = (ScheduleJob)context.getMergedJobDataMap().get("scheduleJob"); System.out.println("任务名称 = [" + scheduleJob.getJobName() + "]"); }}
3、系统启动时从数据库中读取调度信息,初始化quartz
public void init() throws Exception {Scheduler scheduler = schedulerFactoryBean.getScheduler(); // 可执行的任务列表 List<ScheduleJob> taskList = quartzService.getJobs(); for (ScheduleJob job : taskList) { TriggerKey triggerKey = TriggerKey.triggerKey(job.getJobName(),job.getJobGroup()); CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); // 不存在,创建一个 if (null == trigger) { JobDetail jobDetail = JobBuilder.newJob(QuartzJobFactory.class) .withIdentity(job.getJobName(),job.getJobGroup()).build(); jobDetail.getJobDataMap().put("scheduleJob", job); // 表达式调度构建器 CronScheduleBuilder scheduleBuilder = CronScheduleBuilder .cronSchedule(job.getCronExpression()); // 按新的表达式构建一个新的trigger trigger = TriggerBuilder.newTrigger() .withIdentity(job.getJobName(),job.getJobGroup()) .withSchedule(scheduleBuilder).build(); scheduler.scheduleJob(jobDetail, trigger); } else { // trigger已存在,则更新相应的定时设置 CronScheduleBuilder scheduleBuilder = CronScheduleBuilder .cronSchedule(job.getCronExpression()); // 按新的cronExpression表达式重新构建trigger trigger = trigger.getTriggerBuilder().withIdentity(triggerKey) .withSchedule(scheduleBuilder).build(); // 按新的trigger重新设置job执行 scheduler.rescheduleJob(triggerKey, trigger); } }}
4、动态暂停、恢复、修改、添加:
//暂停、恢复public void pauseQuartz(String id,int flag) throws Exception {ScheduleJob scheduleJob = quartzJobDao.get(Integer.parseInt(id));Scheduler scheduler = schedulerFactoryBean.getScheduler(); JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup()); if (flag == 0) { scheduler.pauseJob(jobKey); } else { scheduler.resumeJob(jobKey); } /** 任务状态 0禁用 1启用 2删除*/ Map map = new HashMap(); map.put("id", id); map.put("jobStatus", flag);quartzJobDao.updateParam(map, "updateJob");}//新增或修改public void updateQuartz(ScheduleJob job) throws Exception { Scheduler scheduler = schedulerFactoryBean.getScheduler(); if(null!=job){ //获取触发器标识 TriggerKey triggerKey = TriggerKey.triggerKey(job.getJobName(), job.getJobGroup()); //获取触发器trigger CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); if(null==trigger){//不存在任务 //创建任务 JobDetail jobDetail = JobBuilder.newJob(QuartzJobFactory.class) .withIdentity(job.getJobName(), job.getJobGroup()) .build(); jobDetail.getJobDataMap().put("scheduleJob", job); //表达式调度构建器 CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job .getCronExpression()); //按新的cronExpression表达式构建一个新的trigger trigger = TriggerBuilder.newTrigger() .withIdentity(job.getJobName(), job.getJobGroup()) .withSchedule(scheduleBuilder) .build(); scheduler.scheduleJob(jobDetail, trigger); //把任务插入数据库 quartzJobDao.insert(job); }else{//存在任务 // Trigger已存在,那么更新相应的定时设置 //表达式调度构建器 CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression()); //按新的cronExpression表达式重新构建trigger Trigger newtrigger = trigger.getTriggerBuilder() .withIdentity(triggerKey) .withSchedule(scheduleBuilder) .build(); //按新的trigger重新设置job执行 scheduler.rescheduleJob(triggerKey, newtrigger); //更新数据库中的任务 Map map = new HashMap(); map.put("jobName", job.getJobName()); map.put("jobGroup", job.getJobGroup()); map.put("cronExpression", job.getCronExpression()); quartzJobDao.updateParam(map, "updateJobTriger"); } } }
1 0
- springmvc+easyui实现界面控制quartz的暂停、恢复、修改、添加
- Spring+Quartz定时器使用方法(任务的添加删除修改暂停恢复)
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Quartz的任务的临时启动和暂停和恢复
- Quartz的任务的临时启动和暂停和恢复
- Quartz的任务的临时启动和暂停和恢复
- Quartz的任务的临时启动和暂停和恢复
- Quartz的任务的临时启动和暂停和恢复
- Quartz的任务的临时启动和暂停和恢复
- I2C
- Js获取当前日期时间及其它操作
- Unity3D SpuerSocket 网络聊天室实现 <一>
- android RecylerView需要注意的问题
- ice和java socket网络传输的对比
- springmvc+easyui实现界面控制quartz的暂停、恢复、修改、添加
- JS组装 HTML片段 列表 ul li
- jQuery.fileDownload.js successCallback方法失效的问题
- 实现jqgrid表格数据上下滚动
- 利用ssh传输文件
- [腾讯]关于typedef char *String_t; 和#define String_d char *
- 生活本来就不完美
- win8 64bit/win7 32bit/winxp 32bit +QT+opencv环境配置教程,亲测成功
- ABAP常用事物码