在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类。由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可。
- package com.easyway.app.quartz.mgr;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- import org.quartz.JobDataMap;
- import org.quartz.JobDetail;
- import org.quartz.JobKey;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.SchedulerFactory;
- import org.quartz.Trigger;
- import org.quartz.TriggerKey;
- import org.quartz.impl.StdSchedulerFactory;
- import org.quartz.impl.matchers.GroupMatcher;
- /**
- * 一个简单的quartz任务管理器
- * @author longgangbai
- *
- */
- public class QuartzScheduleMgr {
- private static Scheduler scheduler=getScheduler();
- /**
- * 创建一个调度对象
- * @return
- * @throws SchedulerException
- */
- private static Scheduler getScheduler() {
- SchedulerFactory sf = new StdSchedulerFactory();
- Scheduler scheduler=null;
- try {
- scheduler = sf.getScheduler();
- } catch (SchedulerException e) {
- e.printStackTrace();
- }
- return scheduler;
- }
- public static Scheduler getInstanceScheduler(){
- return scheduler;
- }
- /**
- * 启动一个调度对象
- * @throws SchedulerException
- */
- public void start() throws SchedulerException
- {
- scheduler.start();
- }
- /**
- * 检查调度是否启动
- * @return
- * @throws SchedulerException
- */
- public boolean isStarted() throws SchedulerException
- {
- return scheduler.isStarted();
- }
- /**
- * 关闭调度信息
- * @throws SchedulerException
- */
- public void shutdown() throws SchedulerException {
- scheduler.shutdown();
- }
- /**
- * 添加调度的job信息
- * @param jobdetail
- * @param trigger
- * @return
- * @throws SchedulerException
- */
- public Date scheduleJob(JobDetail jobdetail, Trigger trigger)
- throws SchedulerException{
- return scheduler.scheduleJob(jobdetail, trigger);
- }
- /**
- * 添加相关的触发器