当前位置:网站首页 > Java教程 > 正文

java web quartz教程



/ * Package Name:nc.xyzq.common.task * */ package nc.xyzq.common.task; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.impl.StdSchedulerFactory; //任务管理器 public class QuartzManager { private static SchedulerFactory gSchedulerFactory = new StdSchedulerFactory(); private static String JOB_GROUP_NAME = "EXTJWEB_JOBGROUP_NAME"; private static String TRIGGER_GROUP_NAME = "EXTJWEB_TRIGGERGROUP_NAME"; / * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名 * * @param jobName 任务名 * @param jobClass 任务 * @param time 时间设置,参考quartz说明文档 * */ public static void addJob(String jobName, String jobClass, String time) { try { //System.out.println("addJob>>>1111>>Apache Tomcat v6.0.32 at localhost:"+jobName+" jobClass:"+jobClass+" time:"+time); //通过SchedulerFactory来获取一个调度器  Scheduler sched = gSchedulerFactory.getScheduler(); //引进作业程序  JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, Class .forName(jobClass));// 任务名,任务组,任务执行类 //new一个触发器  CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME); // 触发器时间设定  trigger.setCronExpression(time); sched.scheduleJob(jobDetail, trigger); // 启动 if (!sched.isShutdown()) { sched.start(); } } catch (Exception e) { // TODO Auto-generated catch block  e.printStackTrace(); } } / * 添加一个定时任务 * * @param jobName 任务名 * @param jobGroupName 任务组名 * @param triggerName 触发器名 * @param triggerGroupName 触发器组名 * @param jobClass 任务 * @param time 时间设置,参考quartz说明文档 */ public static void addJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName, String jobClass, String time) { try { //通过SchedulerFactory来获取一个调度器  Scheduler sched = gSchedulerFactory.getScheduler(); //引进作业程序  JobDetail jobDetail = new JobDetail(jobName, jobGroupName, Class .forName(jobClass));// 任务名,任务组,任务执行类 //触发器 CronTrigger trigger = new CronTrigger(triggerName, triggerGroupName); // 触发器时间设定  trigger.setCronExpression(time); sched.scheduleJob(jobDetail, trigger); // 启动 if (!sched.isShutdown()) { sched.start(); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } / * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名) * * @param jobName * @param time */ public static void modifyJobTime(String jobName, String time) { try { Scheduler sched = gSchedulerFactory.getScheduler(); CronTrigger trigger = (CronTrigger) sched.getTrigger(jobName, TRIGGER_GROUP_NAME); if (trigger == null) { return; } String oldTime = trigger.getCronExpression(); if (!oldTime.equalsIgnoreCase(time)) { JobDetail jobDetail = sched.getJobDetail(jobName, JOB_GROUP_NAME); Class objJobClass = jobDetail.getJobClass(); String jobClass = objJobClass.getName(); removeJob(jobName); addJob(jobName, jobClass, time); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } / * 修改一个任务的触发时间 * * @param triggerName * @param triggerGroupName * @param time */ public static void modifyJobTime(String triggerName, String triggerGroupName, String time) { try { Scheduler sched = gSchedulerFactory.getScheduler(); CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerName, triggerGroupName); if (trigger == null) { return; } String oldTime = trigger.getCronExpression(); if (!oldTime.equalsIgnoreCase(time)) { CronTrigger ct = (CronTrigger) trigger; // 修改时间  ct.setCronExpression(time); // 重启触发器  sched.resumeTrigger(triggerName, triggerGroupName); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } / * 移除一个任务(使用默认的任务组名,触发器名,触发器组名) * * @param jobName */ public static void removeJob(String jobName) { try { Scheduler sched = gSchedulerFactory.getScheduler(); // 停止触发器  sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME); // 移除触发器  sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME); // 删除任务  sched.deleteJob(jobName, JOB_GROUP_NAME); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } / * 移除一个任务 * * @param jobName * @param jobGroupName * @param triggerName * @param triggerGroupName */ public static void removeJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName) { try { Scheduler sched = gSchedulerFactory.getScheduler(); // 停止触发器  sched.pauseTrigger(triggerName, triggerGroupName); // 移除触发器  sched.unscheduleJob(triggerName, triggerGroupName); // 删除任务  sched.deleteJob(jobName, jobGroupName); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } / * 启动所有定时任务 */ public static void startJobs() { try { Scheduler sched = gSchedulerFactory.getScheduler(); if (sched.isShutdown()) { sched.start(); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } / * 关闭所有定时任务 */ public static void shutdownJobs() { try { Scheduler sched = gSchedulerFactory.getScheduler(); if (!sched.isShutdown()) { sched.shutdown(); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } /* * 停止触发器 * @param triggerName * @param triggerGroupName */ public static void pauseTrigger(){ try { Scheduler sched = gSchedulerFactory.getScheduler(); sched.pauseTriggerGroup(TRIGGER_GROUP_NAME); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } /* * 重启触发器 * @param triggerName * @param triggerGroupName * @param time */ public static void resumeTrigger() { try { Scheduler sched = gSchedulerFactory.getScheduler(); // 重启触发器  sched.resumeTriggerGroup(TRIGGER_GROUP_NAME); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } }

版权声明


相关文章:

  • 李兴华java web视频教程2024-12-19 18:02:03
  • java安装教程中文2024-12-19 18:02:03
  • java60教程2024-12-19 18:02:03
  • java 编程指南教程2024-12-19 18:02:03
  • java数据库建造教程2024-12-19 18:02:03
  • 免费 java教程2024-12-19 18:02:03
  • java分片合并的教程2024-12-19 18:02:03
  • 猪肉塔java版教程2024-12-19 18:02:03
  • java配jdk教程2024-12-19 18:02:03
  • java讲义教程2024-12-19 18:02:03