schedulermanager.java
来自「cwbbs 云网论坛源码」· Java 代码 · 共 184 行
JAVA
184 行
package cn.js.fan.module.cms.kernel;import org.quartz.SchedulerFactory;import org.quartz.Scheduler;import org.quartz.JobDetail;import org.quartz.CronTrigger;import com.cloudwebsoft.framework.util.LogUtil;import cn.js.fan.util.StrUtil;import java.util.Vector;import java.util.Iterator;import org.quartz.SchedulerException;import org.quartz.JobDataMap;import cn.js.fan.module.cms.Config;public class SchedulerManager { static SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); static Scheduler sched = null; static SchedulerManager schedulerMgr = null; public static SchedulerManager getInstance() { if (schedulerMgr==null) { schedulerMgr = new SchedulerManager(); schedulerMgr.init(); } return schedulerMgr; } public void init() { try { sched = schedFact.getScheduler(); } catch (Exception e) { LogUtil.getLog(getClass()).error("init1:" + e.getMessage()); } int i = 0; JobUnitDb jud = new JobUnitDb(); Vector v = jud.list(); Iterator ir = v.iterator(); System.out.println("----------Init Scheduler------------------"); while (ir.hasNext()) { jud = (JobUnitDb)ir.next(); String className = jud.getString("job_class"); try { Class cls = Class.forName(jud.getString("job_class")); JobDetail jobDetail = new JobDetail(jud.getString("id"), sched.DEFAULT_GROUP, cls); if (className.equals("com.redmoon.forum.job.FullTextSearchJob")) jobDetail.getJobDataMap().put("fullTextSearchTime", jud.getString("data_map")); else if (className.equals("cn.js.fan.module.cms.job.RobotJob")) jobDetail.getJobDataMap().put("id", jud.getString("data_map")); else if (className.equals("com.redmoon.forum.job.RobotJob")) jobDetail.getJobDataMap().put("id", jud.getString("data_map")); CronTrigger trigger = new CronTrigger(jud.getString("id"), sched.DEFAULT_GROUP, jud.getString("cron")); sched.scheduleJob(jobDetail, trigger); System.out.println("Schedule " + jud.getString("job_name") + " cron=" + jud.getString("cron")); } catch (Exception e) { LogUtil.getLog(getClass()).error("init:" + StrUtil.trace(e)); } i++; } start(); Config cfg = new Config(); int homeCreateHtmlInterval = cfg.getIntProperty("cms.homeCreateHtmlInterval"); if (homeCreateHtmlInterval>0) { String cron = "0 0/" + homeCreateHtmlInterval + " * * * ?"; scheduleJob("homeHtml", "cn.js.fan.module.cms.job.HomeCreateHtmJob", cron, ""); } } public void scheduleJob(String jobId, String jobClass, String cron, String data_map) { if (isStarted()) { System.out.println("Schedule " + jobClass + " cron=" + cron); try { Class cls = Class.forName(jobClass); JobDetail jobDetail = new JobDetail(jobId, sched.DEFAULT_GROUP, cls); CronTrigger trigger = new CronTrigger(jobId, sched.DEFAULT_GROUP, cron); sched.scheduleJob(jobDetail, trigger); } catch (Exception e) { LogUtil.getLog(getClass()).error("scheduleJob:" + e.getMessage()); } } } public void delJob(String jobId) { try { sched.deleteJob(jobId, sched.DEFAULT_GROUP); } catch (Exception e) { LogUtil.getLog(getClass()).error("deleteJob:" + e.getMessage()); } } public void rescheduleJob(String jobId, String cron) { try { JobDetail jd = sched.getJobDetail(jobId, sched.DEFAULT_GROUP); JobDataMap jdm = jd.getJobDataMap(); CronTrigger trigger = new CronTrigger("" + jobId, sched.DEFAULT_GROUP, cron); trigger.setJobName("" + jobId); trigger.setJobGroup(Scheduler.DEFAULT_GROUP); trigger.setJobDataMap(jdm); sched.rescheduleJob(jobId, Scheduler.DEFAULT_GROUP, trigger); } catch (Exception e) { LogUtil.getLog(getClass()).error("rescheduleJob:" + StrUtil.trace(e)); } } public void start() { try { sched.start(); } catch (Exception e) { LogUtil.getLog(getClass()).error("start:" + StrUtil.trace(e)); } } public void pause() { System.out.println("----------Pause Scheduler------------------"); try { sched.pause(); } catch (Exception e) { LogUtil.getLog(getClass()).error("pause:" + e.getMessage()); } } public boolean isPaused() { boolean re = false; try { re = sched.isPaused(); } catch (Exception e) { LogUtil.getLog(getClass()).error("isPaused:" + e.getMessage()); } return re; } public void shutdown() { System.out.println("----------Shutdown Scheduler------------------"); try { sched.shutdown(); } catch (Exception e) { LogUtil.getLog(getClass()).error("shutdown:" + e.getMessage()); } schedulerMgr = null; } public boolean isStarted() { boolean re = false; try { re = sched.isStarted(); } catch (Exception e) { LogUtil.getLog(getClass()).error("isStarted:" + e.getMessage()); } return re; } public boolean isShutdown() throws SchedulerException { return sched.isShutdown(); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?