⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quartzscheduler.java

📁 定时器开源项目, 相对于 jcrontab, Quartz 算是更完整的一个项目, 随著开发的版本上来, 他已经脱离只是写在程序里面的计时器, 在指定的时间或区间, 处理所指定的事件. 也加入了 se
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        // build a list of all scheduler listeners that are to be notified...        List schedListeners = getSchedulerListeners();        // notify all scheduler listeners        java.util.Iterator itr = schedListeners.iterator();        while (itr.hasNext()) {            SchedulerListener sl = (SchedulerListener) itr.next();            try {                sl.schedulerError(msg, se);            } catch (Exception e) {                getLog()                        .error(                                "Error while notifying SchedulerListener of error: ",                                e);                getLog().error(                        "  Original error (for notification) was: " + msg, se);            }        }    }    public void notifySchedulerListenersSchduled(Trigger trigger) {        // build a list of all scheduler listeners that are to be notified...        List schedListeners = getSchedulerListeners();        // notify all scheduler listeners        java.util.Iterator itr = schedListeners.iterator();        while (itr.hasNext()) {            SchedulerListener sl = (SchedulerListener) itr.next();            try {                sl.jobScheduled(trigger);            } catch (Exception e) {                getLog().error(                        "Error while notifying SchedulerListener of scheduled job."                                + "  Triger=" + trigger.getFullName(), e);            }        }    }    public void notifySchedulerListenersUnschduled(String triggerName,            String triggerGroup) {        // build a list of all scheduler listeners that are to be notified...        List schedListeners = getSchedulerListeners();        // notify all scheduler listeners        java.util.Iterator itr = schedListeners.iterator();        while (itr.hasNext()) {            SchedulerListener sl = (SchedulerListener) itr.next();            try {                sl.jobUnscheduled(triggerName, triggerGroup);            } catch (Exception e) {                getLog().error(                        "Error while notifying SchedulerListener of unscheduled job."                                + "  Triger=" + triggerGroup + "."                                + triggerName, e);            }        }    }    public void notifySchedulerListenersFinalized(Trigger trigger) {        // build a list of all scheduler listeners that are to be notified...        List schedListeners = getSchedulerListeners();        // notify all scheduler listeners        java.util.Iterator itr = schedListeners.iterator();        while (itr.hasNext()) {            SchedulerListener sl = (SchedulerListener) itr.next();            try {                sl.triggerFinalized(trigger);            } catch (Exception e) {                getLog().error(                        "Error while notifying SchedulerListener of finalized trigger."                                + "  Triger=" + trigger.getFullName(), e);            }        }    }    public void notifySchedulerListenersPausedTrigger(String name, String group) {        // build a list of all job listeners that are to be notified...        List schedListeners = getSchedulerListeners();        // notify all scheduler listeners        java.util.Iterator itr = schedListeners.iterator();        while (itr.hasNext()) {            SchedulerListener sl = (SchedulerListener) itr.next();            try {                sl.triggersPaused(name, group);            } catch (Exception e) {                getLog().error(                        "Error while notifying SchedulerListener of paused trigger/group."                                + "  Triger=" + group + "." + name, e);            }        }    }    public void notifySchedulerListenersResumedTrigger(String name, String group) {        // build a list of all job listeners that are to be notified...        List schedListeners = getSchedulerListeners();        // notify all scheduler listeners        java.util.Iterator itr = schedListeners.iterator();        while (itr.hasNext()) {            SchedulerListener sl = (SchedulerListener) itr.next();            try {                sl.triggersResumed(name, group);            } catch (Exception e) {                getLog().error(                        "Error while notifying SchedulerListener of resumed trigger/group."                                + "  Triger=" + group + "." + name, e);            }        }    }    public void notifySchedulerListenersPausedJob(String name, String group) {        // build a list of all job listeners that are to be notified...        List schedListeners = getSchedulerListeners();        // notify all scheduler listeners        java.util.Iterator itr = schedListeners.iterator();        while (itr.hasNext()) {            SchedulerListener sl = (SchedulerListener) itr.next();            try {                sl.jobsPaused(name, group);            } catch (Exception e) {                getLog().error(                        "Error while notifying SchedulerListener of paused job/group."                                + "  Job=" + group + "." + name, e);            }        }    }    public void notifySchedulerListenersResumedJob(String name, String group) {        // build a list of all job listeners that are to be notified...        List schedListeners = getSchedulerListeners();        // notify all scheduler listeners        java.util.Iterator itr = schedListeners.iterator();        while (itr.hasNext()) {            SchedulerListener sl = (SchedulerListener) itr.next();            try {                sl.jobsResumed(name, group);            } catch (Exception e) {                getLog().error(                        "Error while notifying SchedulerListener of resumed job/group."                                + "  Job=" + group + "." + name, e);            }        }    }    public void notifySchedulerListenersShutdown() {        // build a list of all job listeners that are to be notified...        List schedListeners = getSchedulerListeners();        // notify all scheduler listeners        java.util.Iterator itr = schedListeners.iterator();        while (itr.hasNext()) {            SchedulerListener sl = (SchedulerListener) itr.next();            try {                sl.schedulerShutdown();            } catch (Exception e) {                getLog().error(                        "Error while notifying SchedulerListener of shutdown.",                        e);            }        }    }    /**     * <p>     * Add the given <code>{@link org.quartz.spi.SchedulerPlugin}</code> to     * the <code>Scheduler</code>. This method expects the plugin's     * "initialize" method to be invoked externally (either before or after     * this method is called).     */    public void addSchedulerPlugin(SchedulerPlugin plugin) {        schedulerPlugins.add(plugin);    }        /**     * Interrupt all instances of the identified InterruptableJob.     *       * @see org.quartz.core.RemotableQuartzScheduler#interrupt(java.lang.String, java.lang.String)     */    public boolean interrupt(SchedulingContext ctxt, String jobName, String groupName) throws UnableToInterruptJobException {        List jobs = getCurrentlyExecutingJobs();        java.util.Iterator it = jobs.iterator();                JobExecutionContext jec = null;        JobDetail jobDetail = null;        Job job = null;                boolean interrupted = false;                while (it.hasNext()) {            jec = (JobExecutionContext)it.next();            jobDetail = jec.getJobDetail();            if (jobName.equals(jobDetail.getName())                && groupName.equals(jobDetail.getGroup())){                job = jec.getJobInstance();                if (job instanceof InterruptableJob) {                    ((InterruptableJob)job).interrupt();                    interrupted = true;                } else {                    throw new UnableToInterruptJobException(                        "Job '"                        + jobName                        + "' of group '"                        + groupName                        + "' can not be interrupted, since it does not implement "                        + InterruptableJob.class.getName());                                    }            }                                }                return interrupted;    }        private void shutdownPlugins() {        java.util.Iterator itr = schedulerPlugins.iterator();        while (itr.hasNext()) {            SchedulerPlugin plugin = (SchedulerPlugin) itr.next();            plugin.shutdown();        }    }    private void startPlugins() {        java.util.Iterator itr = schedulerPlugins.iterator();        while (itr.hasNext()) {            SchedulerPlugin plugin = (SchedulerPlugin) itr.next();            plugin.start();        }    }}///////////////////////////////////////////////////////////////////////////////// ErrorLogger - Scheduler Listener Class///////////////////////////////////////////////////////////////////////////////class ErrorLogger implements SchedulerListener {    public static Log getLog() {        return LogFactory.getLog(ErrorLogger.class);    }    ErrorLogger() {    }    public void jobScheduled(Trigger trigger) {        // do nothing...    }    public void jobUnscheduled(String triggerName, String triggerGroup) {        // do nothing...    }    public void triggerFinalized(Trigger trigger) {        // do nothing...    }    /**     * <p>     * Called by the <code>{@link Scheduler}</code> when a <code>{@link Trigger}</code>     * or group of <code>{@link Trigger}s</code> has been paused.     * </p>     *      * <p>     * If a group was paused, then the <code>triggerName</code> parameter     * will be null.     * </p>     */    public void triggersPaused(String triggerName, String triggerGroup) {        // do nothing...    }    /**     * <p>     * Called by the <code>{@link Scheduler}</code> when a <code>{@link Trigger}</code>     * or group of <code>{@link Trigger}s</code> has been un-paused.     * </p>     *      * <p>     * If a group was resumed, then the <code>triggerName</code> parameter     * will be null.     * </p>     */    public void triggersResumed(String triggerName, String triggerGroup) {        // do nothing...    }    /**     * <p>     * Called by the <code>{@link Scheduler}</code> when a <code>{@link org.quartz.JobDetail}</code>     * or group of <code>{@link org.quartz.JobDetail}s</code> has been     * paused.     * </p>     *      * <p>     * If a group was paused, then the <code>jobName</code> parameter will be     * null.     * </p>     */    public void jobsPaused(String jobName, String jobGroup) {        // do nothing...    }    /**     * <p>     * Called by the <code>{@link Scheduler}</code> when a <code>{@link org.quartz.JobDetail}</code>     * or group of <code>{@link org.quartz.JobDetail}s</code> has been     * un-paused.     * </p>     *      * <p>     * If a group was paused, then the <code>jobName</code> parameter will be     * null.     * </p>     */    public void jobsResumed(String jobName, String jobGroup) {        // do nothing...    }    public void schedulerError(String msg, SchedulerException cause) {        getLog().error(msg, cause);    }    public void schedulerShutdown() {        // do nothing...    }}///////////////////////////////////////////////////////////////////////////////// ExecutingJobsManager - Job Listener Class///////////////////////////////////////////////////////////////////////////////class ExecutingJobsManager implements JobListener {    HashMap executingJobs = new HashMap();    int numJobsFired = 0;    ExecutingJobsManager() {    }    public String getName() {        return getClass().getName();    }    public int getNumJobsCurrentlyExecuting() {        synchronized (executingJobs) {            return executingJobs.size();        }    }    public void jobToBeExecuted(JobExecutionContext context) {        numJobsFired++;        synchronized (executingJobs) {            executingJobs                    .put(context.getTrigger().getFireInstanceId(), context);        }    }    public void jobWasExecuted(JobExecutionContext context,            JobExecutionException jobException) {        synchronized (executingJobs) {            executingJobs.remove(context.getTrigger().getFireInstanceId());        }    }    public int getNumJobsFired() {        return numJobsFired;    }    public List getExecutingJobs() {        synchronized (executingJobs) {            return java.util.Collections.unmodifiableList(new ArrayList(                    executingJobs.values()));        }    }    public void jobExecutionVetoed(JobExecutionContext context) {            }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -