📄 quartzscheduler.java
字号:
// 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 + -