📄 quartzscheduler.java
字号:
|| jobListener.getName().length() == 0) throw new IllegalArgumentException( "JobListener name cannot be empty."); globalJobListeners.add(jobListener); } /** * <p> * Add the given <code>{@link org.quartz.JobListener}</code> to the * <code>Scheduler</code>'s list, of registered <code>JobListener</code>s. */ public void addJobListener(JobListener jobListener) { if (jobListener.getName() == null || jobListener.getName().length() == 0) throw new IllegalArgumentException( "JobListener name cannot be empty."); jobListeners.put(jobListener.getName(), jobListener); } /** * <p> * Remove the given <code>{@link org.quartz.JobListener}</code> from the * <code>Scheduler</code>'s list of <i>global</i> listeners. * </p> * * @return true if the identifed listener was found in the list, and * removed. */ public boolean removeGlobalJobListener(JobListener jobListener) { return globalJobListeners.remove(jobListener); } /** * <p> * Remove the identifed <code>{@link org.quartz.JobListener}</code> from * the <code>Scheduler</code>'s list of registered listeners. * </p> * * @return true if the identifed listener was found in the list, and * removed. */ public boolean removeJobListener(String name) { Object o = jobListeners.remove(name); if (o != null) return true; return false; } /** * <p> * Get a List containing all of the <code>{@link org.quartz.JobListener}</code> * s in the <code>Scheduler</code>'s<i>global</i> list. * </p> */ public List getGlobalJobListeners() { return (List) globalJobListeners.clone(); } /** * <p> * Get a Set containing the names of all the <i>non-global</i><code>{@link org.quartz.JobListener}</code> * s registered with the <code>Scheduler</code>. * </p> */ public Set getJobListenerNames() { return Collections.unmodifiableSet(jobListeners.keySet()); } /** * <p> * Get the <i>non-global</i><code>{@link org.quartz.JobListener}</code> * that has the given name. * </p> */ public JobListener getJobListener(String name) { return (JobListener) jobListeners.get(name); } /** * <p> * Add the given <code>{@link org.quartz.TriggerListener}</code> to the * <code>Scheduler</code>'s<i>global</i> list. * </p> * * <p> * Listeners in the 'global' list receive notification of execution events * for ALL <code>{@link org.quartz.Trigger}</code>s. * </p> */ public void addGlobalTriggerListener(TriggerListener triggerListener) { if (triggerListener.getName() == null || triggerListener.getName().length() == 0) throw new IllegalArgumentException( "TriggerListener name cannot be empty."); globalTriggerListeners.add(triggerListener); } /** * <p> * Add the given <code>{@link org.quartz.TriggerListener}</code> to the * <code>Scheduler</code>'s list, of registered <code>TriggerListener</code>s. */ public void addTriggerListener(TriggerListener triggerListener) { if (triggerListener.getName() == null || triggerListener.getName().length() == 0) throw new IllegalArgumentException( "TriggerListener name cannot be empty."); triggerListeners.put(triggerListener.getName(), triggerListener); } /** * <p> * Remove the given <code>{@link org.quartz.TriggerListener}</code> from * the <code>Scheduler</code>'s list of <i>global</i> listeners. * </p> * * @return true if the identifed listener was found in the list, and * removed. */ public boolean removeGlobalTriggerListener(TriggerListener triggerListener) { return globalTriggerListeners.remove(triggerListener); } /** * <p> * Remove the identifed <code>{@link org.quartz.TriggerListener}</code> * from the <code>Scheduler</code>'s list of registered listeners. * </p> * * @return true if the identifed listener was found in the list, and * removed. */ public boolean removeTriggerListener(String name) { Object o = triggerListeners.remove(name); if (o != null) return true; return false; } /** * <p> * Get a list containing all of the <code>{@link org.quartz.TriggerListener}</code> * s in the <code>Scheduler</code>'s<i>global</i> list. * </p> */ public List getGlobalTriggerListeners() { return (List) globalTriggerListeners.clone(); } /** * <p> * Get a Set containing the names of all the <i>non-global</i><code>{@link org.quartz.TriggerListener}</code> * s registered with the <code>Scheduler</code>. * </p> */ public Set getTriggerListenerNames() { return Collections.unmodifiableSet(triggerListeners.keySet()); } /** * <p> * Get the <i>non-global</i><code>{@link org.quartz.TriggerListener}</code> * that has the given name. * </p> */ public TriggerListener getTriggerListener(String name) { return (TriggerListener) triggerListeners.get(name); } /** * <p> * Register the given <code>{@link SchedulerListener}</code> with the * <code>Scheduler</code>. * </p> */ public void addSchedulerListener(SchedulerListener schedulerListener) { schedulerListeners.add(schedulerListener); } /** * <p> * Remove the given <code>{@link SchedulerListener}</code> from the * <code>Scheduler</code>. * </p> * * @return true if the identifed listener was found in the list, and * removed. */ public boolean removeSchedulerListener(SchedulerListener schedulerListener) { return schedulerListeners.remove(schedulerListener); } /** * <p> * Get a List containing all of the <code>{@link SchedulerListener}</code> * s registered with the <code>Scheduler</code>. * </p> */ public List getSchedulerListeners() { return (List) schedulerListeners.clone(); } protected void notifyJobStoreJobComplete(SchedulingContext ctxt, Trigger trigger, JobDetail detail, int instCode) throws JobPersistenceException { resources.getJobStore().triggeredJobComplete(ctxt, trigger, detail, instCode); } protected void notifySchedulerThread() { if (isSignalOnSchedulingChange()) schedThread.signalSchedulingChange(); } private List buildTriggerListenerList(String[] additionalLstnrs) throws SchedulerException { List triggerListeners = getGlobalTriggerListeners(); for (int i = 0; i < additionalLstnrs.length; i++) { TriggerListener tl = getTriggerListener(additionalLstnrs[i]); if (tl != null) triggerListeners.add(tl); else throw new SchedulerException("TriggerListener '" + additionalLstnrs[i] + "' not found.", SchedulerException.ERR_TRIGGER_LISTENER_NOT_FOUND); } return triggerListeners; } private List buildJobListenerList(String[] additionalLstnrs) throws SchedulerException { List jobListeners = getGlobalJobListeners(); for (int i = 0; i < additionalLstnrs.length; i++) { JobListener jl = getJobListener(additionalLstnrs[i]); if (jl != null) jobListeners.add(jl); else throw new SchedulerException("JobListener '" + additionalLstnrs[i] + "' not found.", SchedulerException.ERR_JOB_LISTENER_NOT_FOUND); } return jobListeners; } public boolean notifyTriggerListenersFired(JobExecutionContext jec) throws SchedulerException { // build a list of all trigger listeners that are to be notified... List triggerListeners = buildTriggerListenerList(jec.getTrigger() .getTriggerListenerNames()); boolean vetoedExecution = false; // notify all trigger listeners in the list java.util.Iterator itr = triggerListeners.iterator(); while (itr.hasNext()) { TriggerListener tl = (TriggerListener) itr.next(); try { tl.triggerFired(jec.getTrigger(), jec); if(tl.vetoJobExecution(jec.getTrigger(), jec)) vetoedExecution = true; } catch (Exception e) { SchedulerException se = new SchedulerException( "TriggerListener '" + tl.getName() + "' threw exception: " + e.getMessage(), e); se.setErrorCode(SchedulerException.ERR_TRIGGER_LISTENER); throw se; } } return vetoedExecution; } public void notifyTriggerListenersMisfired(Trigger trigger) throws SchedulerException { // build a list of all trigger listeners that are to be notified... List triggerListeners = buildTriggerListenerList(trigger .getTriggerListenerNames()); // notify all trigger listeners in the list java.util.Iterator itr = triggerListeners.iterator(); while (itr.hasNext()) { TriggerListener tl = (TriggerListener) itr.next(); try { tl.triggerMisfired(trigger); } catch (Exception e) { SchedulerException se = new SchedulerException( "TriggerListener '" + tl.getName() + "' threw exception: " + e.getMessage(), e); se.setErrorCode(SchedulerException.ERR_TRIGGER_LISTENER); throw se; } } } public void notifyTriggerListenersComplete(JobExecutionContext jec, int instCode) throws SchedulerException { // build a list of all trigger listeners that are to be notified... List triggerListeners = buildTriggerListenerList(jec.getTrigger() .getTriggerListenerNames()); // notify all trigger listeners in the list java.util.Iterator itr = triggerListeners.iterator(); while (itr.hasNext()) { TriggerListener tl = (TriggerListener) itr.next(); try { tl.triggerComplete(jec.getTrigger(), jec, instCode); } catch (Exception e) { SchedulerException se = new SchedulerException( "TriggerListener '" + tl.getName() + "' threw exception: " + e.getMessage(), e); se.setErrorCode(SchedulerException.ERR_TRIGGER_LISTENER); throw se; } } } public void notifyJobListenersToBeExecuted(JobExecutionContext jec) throws SchedulerException { // build a list of all job listeners that are to be notified... List jobListeners = buildJobListenerList(jec.getJobDetail() .getJobListenerNames()); // notify all job listeners java.util.Iterator itr = jobListeners.iterator(); while (itr.hasNext()) { JobListener jl = (JobListener) itr.next(); try { jl.jobToBeExecuted(jec); } catch (Exception e) { SchedulerException se = new SchedulerException( "JobListener '" + jl.getName() + "' threw exception: " + e.getMessage(), e); se.setErrorCode(SchedulerException.ERR_JOB_LISTENER); throw se; } } } public void notifyJobListenersWasVetoed(JobExecutionContext jec) throws SchedulerException { // build a list of all job listeners that are to be notified... List jobListeners = buildJobListenerList(jec.getJobDetail() .getJobListenerNames()); // notify all job listeners java.util.Iterator itr = jobListeners.iterator(); while (itr.hasNext()) { JobListener jl = (JobListener) itr.next(); try { jl.jobExecutionVetoed(jec); } catch (Exception e) { SchedulerException se = new SchedulerException( "JobListener '" + jl.getName() + "' threw exception: " + e.getMessage(), e); se.setErrorCode(SchedulerException.ERR_JOB_LISTENER); throw se; } } } public void notifyJobListenersWasExecuted(JobExecutionContext jec, JobExecutionException je) throws SchedulerException { // build a list of all job listeners that are to be notified... List jobListeners = buildJobListenerList(jec.getJobDetail() .getJobListenerNames()); // notify all job listeners java.util.Iterator itr = jobListeners.iterator(); while (itr.hasNext()) { JobListener jl = (JobListener) itr.next(); try { jl.jobWasExecuted(jec, je); } catch (Exception e) { SchedulerException se = new SchedulerException( "JobListener '" + jl.getName() + "' threw exception: " + e.getMessage(), e); se.setErrorCode(SchedulerException.ERR_JOB_LISTENER); throw se; } } } public void notifySchedulerListenersError(String msg, SchedulerException se) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -