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 + -
显示快捷键?