Spring与quartz集成后的定时任务工厂类

请先参考:http://blog.csdn.net/feiyang123_/article/details/46372711
package org.phoenix.web.quartz;

import org.phoenix.web.email.SpringBeanFactory;
import org.phoenix.web.model.TaskModel;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.SchedulerException;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.StdScheduler;
import org.springframework.scheduling.quartz.QuartzJobBean;

/**
 * 定时任务工厂,对任务进行增删改操作
 * @author mengfeiyang
 *
 */

public class JobFactory {
    private static String JOB_GROUP_NAME = "phoenix.case.job";  
    
	public static String addJob(Class
   
    clazz,TaskModel taskModel){
		try{
		 StdScheduler scheduler = (StdScheduler)SpringBeanFactory.getInstance().getBeanById("schedulerFactoryBean");	
		 TriggerKey triggerKey = TriggerKey.triggerKey(taskModel.getId()+"", JOB_GROUP_NAME);
         CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
         JobDetail jobDetail = JobBuilder.newJob(clazz)
                 .withIdentity(taskModel.getId()+"", JOB_GROUP_NAME)
                 .build();
         jobDetail.getJobDataMap().put("taskModel", taskModel);
         CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(taskModel.getTaskParameter());
          
         trigger = TriggerBuilder.newTrigger()
                 .withIdentity(taskModel.getId()+"", JOB_GROUP_NAME)
                 .withSchedule(scheduleBuilder)
                 .build();
          
         scheduler.scheduleJob(jobDetail, trigger);
		}catch(SchedulerException e){
			e.printStackTrace();
			return e.getCause().toString();
		}
		return "success";
	}
	
	@SuppressWarnings("unchecked")
	public static String updateJob(TaskModel taskModel){
		try{
			StdScheduler scheduler = (StdScheduler)SpringBeanFactory.getInstance().getBeanById("schedulerFactoryBean");
	        JobDetail jobDetail = scheduler.getJobDetail(JobKey.jobKey(taskModel.getId()+"", JOB_GROUP_NAME));  
	        Class
   
    objJobClass = (Class
   
   ) jobDetail.getJobClass(); 
	        deleteJob(taskModel);
	        addJob(objJobClass,taskModel);
	        return "success";
		}catch(Exception e){
			return "异常信息:"+e.getMessage();
		}
	}
	
	public static String stopJob(TaskModel taskModel){
		StdScheduler scheduler = (StdScheduler)SpringBeanFactory.getInstance().getBeanById("schedulerFactoryBean");
        JobKey jobKey = JobKey.jobKey(taskModel.getId()+"", JOB_GROUP_NAME);
        try {
            scheduler.pauseJob(jobKey);
            return "success";
        } catch (SchedulerException e) {
            e.printStackTrace();
            return e.getCause().toString();
        }
	}
	
	public static String resumeJob(TaskModel taskModel){
		StdScheduler scheduler = (StdScheduler)SpringBeanFactory.getInstance().getBeanById("schedulerFactoryBean");
        JobKey jobKey = JobKey.jobKey(taskModel.getId()+"", JOB_GROUP_NAME);
        try {
            scheduler.resumeJob(jobKey);
            return "success";
        } catch (SchedulerException e) {
            e.printStackTrace();
            return e.getCause().toString();
        }
	}
	
	public static String deleteJob(TaskModel taskModel){
		StdScheduler scheduler = (StdScheduler)SpringBeanFactory.getInstance().getBeanById("schedulerFactoryBean");
        JobKey jobKey = JobKey.jobKey(taskModel.getId()+"", JOB_GROUP_NAME);
        try {
        	scheduler.pauseTrigger(TriggerKey.triggerKey(taskModel.getId()+"", JOB_GROUP_NAME));// 停止触发器  
        	scheduler.unscheduleJob(TriggerKey.triggerKey(taskModel.getId()+"", JOB_GROUP_NAME));// 移除触发器  
            scheduler.deleteJob(jobKey);
            return "success";
        } catch (SchedulerException e) {
            e.printStackTrace();
            return e.getCause().toString();
        }
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值