📄 quartzscheduler.java
字号:
|| triggerListener.getName().length() == 0) {
throw new IllegalArgumentException(
"TriggerListener name cannot be empty.");
}
synchronized (triggerListeners) {
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.
*
* @deprecated Use <code>{@link #removeGlobalTriggerListener(String)}</code>
*/
public boolean removeGlobalTriggerListener(TriggerListener triggerListener) {
return removeGlobalTriggerListener((triggerListener == null) ? null : triggerListener.getName());
}
/**
* <p>
* Remove the identifed <code>{@link 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(String name) {
synchronized (globalTriggerListeners) {
return (globalTriggerListeners.remove(name) != null);
}
}
/**
* <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) {
synchronized (triggerListeners) {
return (triggerListeners.remove(name) != null);
}
}
/**
* <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() {
synchronized (globalTriggerListeners) {
return new LinkedList(globalTriggerListeners.values());
}
}
/**
* <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() {
synchronized (triggerListeners) {
return new HashSet(triggerListeners.keySet());
}
}
/**
* <p>
* Get the <i>global</i><code>{@link TriggerListener}</code> that
* has the given name.
* </p>
*/
public TriggerListener getGlobalTriggerListener(String name) {
synchronized (globalTriggerListeners) {
return (TriggerListener)globalTriggerListeners.get(name);
}
}
/**
* <p>
* Get the <i>non-global</i><code>{@link org.quartz.TriggerListener}</code>
* that has the given name.
* </p>
*/
public TriggerListener getTriggerListener(String name) {
synchronized (triggerListeners) {
return (TriggerListener) triggerListeners.get(name);
}
}
/**
* <p>
* Register the given <code>{@link SchedulerListener}</code> with the
* <code>Scheduler</code>.
* </p>
*/
public void addSchedulerListener(SchedulerListener schedulerListener) {
synchronized (schedulerListeners) {
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) {
synchronized (schedulerListeners) {
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() {
synchronized (schedulerListeners) {
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 notifyJobStoreJobVetoed(SchedulingContext ctxt,
Trigger trigger, JobDetail detail, int instCode)
throws JobPersistenceException {
resources.getJobStore().triggeredJobComplete(ctxt, trigger, detail, instCode);
}
protected void notifySchedulerThread(long candidateNewNextFireTime) {
if (isSignalOnSchedulingChange()) {
signaler.signalSchedulingChange(candidateNewNextFireTime);
}
}
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) {
// 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 + "."
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -