public class RAMJobStore extends Object implements JobStore
This class implements a that
utilizes RAM as its storage device.
JobStore
As you should know, the ramification of this is that access is extrememly
fast, but the data is completely volatile - therefore this JobStore
should not be used if true persistence between program shutdowns is
required.
| Modifier and Type | Field and Description |
|---|---|
protected HashSet |
blockedJobs |
protected HashMap |
calendarsByName |
protected HashMap |
jobsByFQN |
protected HashMap |
jobsByGroup |
protected Object |
lock |
protected long |
misfireThreshold |
protected HashSet |
pausedJobGroups |
protected HashSet |
pausedTriggerGroups |
protected SchedulerSignaler |
signaler |
protected TreeSet |
timeTriggers |
protected ArrayList |
triggers |
protected HashMap |
triggersByFQN |
protected HashMap |
triggersByGroup |
| Constructor and Description |
|---|
RAMJobStore()
Create a new
RAMJobStore. |
| Modifier and Type | Method and Description |
|---|---|
Trigger |
acquireNextTrigger(SchedulingContext ctxt,
long noLaterThan)
Get a handle to the next trigger to be fired, and mark it as 'reserved'
by the calling scheduler.
|
protected boolean |
applyMisfire(org.quartz.simpl.TriggerWrapper tw) |
String[] |
getCalendarNames(SchedulingContext ctxt)
Get the names of all of the
s
in the JobStore. |
protected String |
getFiredTriggerRecordId() |
String[] |
getJobGroupNames(SchedulingContext ctxt)
Get the names of all of the
groups. |
String[] |
getJobNames(SchedulingContext ctxt,
String groupName)
Get the names of all of the
s that
have the given group name. |
protected org.apache.commons.logging.Log |
getLog() |
long |
getMisfireThreshold() |
int |
getNumberOfCalendars(SchedulingContext ctxt)
Get the number of
s that are
stored in the JobsStore. |
int |
getNumberOfJobs(SchedulingContext ctxt)
Get the number of
s that are
stored in the JobsStore. |
int |
getNumberOfTriggers(SchedulingContext ctxt)
Get the number of
s that are
stored in the JobsStore. |
Set |
getPausedTriggerGroups(SchedulingContext ctxt) |
String[] |
getTriggerGroupNames(SchedulingContext ctxt)
Get the names of all of the
groups. |
String[] |
getTriggerNames(SchedulingContext ctxt,
String groupName)
Get the names of all of the
s
that have the given group name. |
Trigger[] |
getTriggersForJob(SchedulingContext ctxt,
String jobName,
String groupName)
Get all of the Triggers that are associated to the given Job.
|
int |
getTriggerState(SchedulingContext ctxt,
String triggerName,
String groupName)
Get the current state of the identified
. |
protected ArrayList |
getTriggerWrappersForCalendar(String calName) |
protected ArrayList |
getTriggerWrappersForJob(String jobName,
String groupName) |
void |
initialize(ClassLoadHelper loadHelper,
SchedulerSignaler signaler)
Called by the QuartzScheduler before the
JobStore is
used, in order to give the it a chance to initialize. |
void |
pauseAll(SchedulingContext ctxt)
Pause all triggers - equivalent of calling
pauseTriggerGroup(group)
on every group. |
void |
pauseJob(SchedulingContext ctxt,
String jobName,
String groupName)
Pause the
with the given
name - by pausing all of its current Triggers. |
void |
pauseJobGroup(SchedulingContext ctxt,
String groupName)
Pause all of the
in the
given group - by pausing all of their Triggers. |
void |
pauseTrigger(SchedulingContext ctxt,
String triggerName,
String groupName)
Pause the
with the given name. |
void |
pauseTriggerGroup(SchedulingContext ctxt,
String groupName)
Pause all of the
in the given group. |
protected String |
peekTriggers() |
void |
releaseAcquiredTrigger(SchedulingContext ctxt,
Trigger trigger)
Inform the
JobStore that the scheduler no longer plans to
fire the given Trigger, that it had previously acquired
(reserved). |
boolean |
removeCalendar(SchedulingContext ctxt,
String calName)
Remove (delete) the
with the
given name. |
boolean |
removeJob(SchedulingContext ctxt,
String jobName,
String groupName)
|
boolean |
removeTrigger(SchedulingContext ctxt,
String triggerName,
String groupName)
Remove (delete) the
with the
given name. |
boolean |
replaceTrigger(SchedulingContext ctxt,
String triggerName,
String groupName,
Trigger newTrigger)
Remove (delete) the
with the
given name, and store the new given one - which must be associated
with the same job. |
void |
resumeAll(SchedulingContext ctxt)
Resume (un-pause) all triggers - equivalent of calling
resumeTriggerGroup(group)
on every group. |
void |
resumeJob(SchedulingContext ctxt,
String jobName,
String groupName)
Resume (un-pause) the
with
the given name. |
void |
resumeJobGroup(SchedulingContext ctxt,
String groupName)
Resume (un-pause) all of the
in the given group. |
void |
resumeTrigger(SchedulingContext ctxt,
String triggerName,
String groupName)
Resume (un-pause) the
with the given
name. |
void |
resumeTriggerGroup(SchedulingContext ctxt,
String groupName)
Resume (un-pause) all of the
in the
given group. |
Calendar |
retrieveCalendar(SchedulingContext ctxt,
String calName)
Retrieve the given
. |
JobDetail |
retrieveJob(SchedulingContext ctxt,
String jobName,
String groupName)
|
Trigger |
retrieveTrigger(SchedulingContext ctxt,
String triggerName,
String groupName)
Retrieve the given
. |
void |
schedulerStarted()
Called by the QuartzScheduler to inform the
JobStore that
the scheduler has started. |
protected void |
setAllTriggersOfJobToState(String jobName,
String jobGroup,
int state) |
void |
setInstanceId(String schedInstId)
Inform the
JobStore of the Scheduler instance's Id,
prior to initialize being invoked. |
void |
setInstanceName(String schedName)
Inform the
JobStore of the Scheduler instance's name,
prior to initialize being invoked. |
void |
setMisfireThreshold(long misfireThreshold)
The number of milliseconds by which a trigger must have missed its
next-fire-time, in order for it to be considered "misfired" and thus
have its misfire instruction applied.
|
void |
shutdown()
Called by the QuartzScheduler to inform the
JobStore that
it should free up all of it's resources because the scheduler is
shutting down. |
void |
storeCalendar(SchedulingContext ctxt,
String name,
Calendar calendar,
boolean replaceExisting,
boolean updateTriggers)
Store the given
. |
void |
storeJob(SchedulingContext ctxt,
JobDetail newJob,
boolean replaceExisting)
Store the given
. |
void |
storeJobAndTrigger(SchedulingContext ctxt,
JobDetail newJob,
Trigger newTrigger)
|
void |
storeTrigger(SchedulingContext ctxt,
Trigger newTrigger,
boolean replaceExisting)
Store the given
. |
boolean |
supportsPersistence() |
void |
triggeredJobComplete(SchedulingContext ctxt,
Trigger trigger,
JobDetail jobDetail,
int triggerInstCode)
Inform the
JobStore that the scheduler has completed the
firing of the given Trigger (and the execution its
associated Job), and that the
in the given JobDetail should be updated if the Job
is stateful. |
TriggerFiredBundle |
triggerFired(SchedulingContext ctxt,
Trigger trigger)
Inform the
JobStore that the scheduler is now firing the
given Trigger (executing its associated Job),
that it had previously acquired (reserved). |
protected HashMap jobsByFQN
protected HashMap triggersByFQN
protected HashMap jobsByGroup
protected HashMap triggersByGroup
protected TreeSet timeTriggers
protected HashMap calendarsByName
protected ArrayList triggers
protected final Object lock
protected HashSet pausedTriggerGroups
protected HashSet pausedJobGroups
protected HashSet blockedJobs
protected long misfireThreshold
protected SchedulerSignaler signaler
protected org.apache.commons.logging.Log getLog()
public void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler)
Called by the QuartzScheduler before the JobStore is
used, in order to give the it a chance to initialize.
initialize in interface JobStorepublic void schedulerStarted()
throws SchedulerException
JobStore
Called by the QuartzScheduler to inform the JobStore that
the scheduler has started.
schedulerStarted in interface JobStoreSchedulerExceptionpublic long getMisfireThreshold()
public void setMisfireThreshold(long misfireThreshold)
misfireThreshold - public void shutdown()
Called by the QuartzScheduler to inform the JobStore that
it should free up all of it's resources because the scheduler is
shutting down.
public boolean supportsPersistence()
supportsPersistence in interface JobStorepublic void storeJobAndTrigger(SchedulingContext ctxt, JobDetail newJob, Trigger newTrigger) throws JobPersistenceException
storeJobAndTrigger in interface JobStorenewJob - The JobDetail to be stored.newTrigger - The Trigger to be stored.ObjectAlreadyExistsException - if a Job with the same name/group already
exists.JobPersistenceExceptionpublic void storeJob(SchedulingContext ctxt, JobDetail newJob, boolean replaceExisting) throws ObjectAlreadyExistsException
Store the given .
Job
storeJob in interface JobStorenewJob - The Job to be stored.replaceExisting - If true, any Job existing in the
JobStore with the same name & group should be
over-written.ObjectAlreadyExistsException - if a Job with the same name/group already
exists, and replaceExisting is set to false.public boolean removeJob(SchedulingContext ctxt, String jobName, String groupName)
public void storeTrigger(SchedulingContext ctxt, Trigger newTrigger, boolean replaceExisting) throws JobPersistenceException
Store the given .
Trigger
storeTrigger in interface JobStorenewTrigger - The Trigger to be stored.replaceExisting - If true, any Trigger existing in
the JobStore with the same name & group should
be over-written.ObjectAlreadyExistsException - if a Trigger with the same name/group already
exists, and replaceExisting is set to false.JobPersistenceExceptionpauseTriggerGroup(SchedulingContext, String)public boolean removeTrigger(SchedulingContext ctxt, String triggerName, String groupName)
Remove (delete) the with the
given name.
Trigger
removeTrigger in interface JobStoretriggerName - The name of the Trigger to be removed.groupName - The group name of the Trigger to be removed.true if a Trigger with the given
name & group was found and removed from the store.public boolean replaceTrigger(SchedulingContext ctxt, String triggerName, String groupName, Trigger newTrigger) throws JobPersistenceException
JobStore
Remove (delete) the with the
given name, and store the new given one - which must be associated
with the same job.
Trigger
replaceTrigger in interface JobStoretriggerName - The name of the Trigger to be removed.groupName - The group name of the Trigger to be removed.newTrigger - The new Trigger to be stored.true if a Trigger with the given
name & group was found and removed from the store.JobPersistenceExceptionJobStore.replaceTrigger(org.quartz.core.SchedulingContext, java.lang.String, java.lang.String, org.quartz.Trigger)public JobDetail retrieveJob(SchedulingContext ctxt, String jobName, String groupName)
retrieveJob in interface JobStorejobName - The name of the Job to be retrieved.groupName - The group name of the Job to be retrieved.Job, or null if there is no match.public Trigger retrieveTrigger(SchedulingContext ctxt, String triggerName, String groupName)
Retrieve the given .
Trigger
retrieveTrigger in interface JobStoretriggerName - The name of the Trigger to be retrieved.groupName - The group name of the Trigger to be retrieved.Trigger, or null if there is no
match.public int getTriggerState(SchedulingContext ctxt, String triggerName, String groupName) throws JobPersistenceException
Get the current state of the identified .
Trigger
getTriggerState in interface JobStoreJobPersistenceExceptionTrigger.STATE_NORMAL,
Trigger.STATE_PAUSED,
Trigger.STATE_COMPLETE,
Trigger.STATE_ERROR,
Trigger.STATE_BLOCKED,
Trigger.STATE_NONEpublic void storeCalendar(SchedulingContext ctxt, String name, Calendar calendar, boolean replaceExisting, boolean updateTriggers) throws ObjectAlreadyExistsException
Store the given .
Calendar
storeCalendar in interface JobStorecalendar - The Calendar to be stored.replaceExisting - If true, any Calendar existing
in the JobStore with the same name & group
should be over-written.updateTriggers - If true, any Triggers existing
in the JobStore that reference an existing
Calendar with the same name with have their next fire time
re-computed with the new Calendar.ObjectAlreadyExistsException - if a Calendar with the same name already
exists, and replaceExisting is set to false.public boolean removeCalendar(SchedulingContext ctxt, String calName) throws JobPersistenceException
Remove (delete) the with the
given name.
Calendar
If removal of the Calendar would result in
Triggers pointing to non-existent calendars, then a
JobPersistenceException will be thrown.
removeCalendar in interface JobStorecalName - The name of the Calendar to be removed.true if a Calendar with the given name
was found and removed from the store.JobPersistenceExceptionpublic Calendar retrieveCalendar(SchedulingContext ctxt, String calName)
Retrieve the given .
Trigger
retrieveCalendar in interface JobStorecalName - The name of the Calendar to be retrieved.Calendar, or null if there is no
match.public int getNumberOfJobs(SchedulingContext ctxt)
Get the number of s that are
stored in the JobDetailJobsStore.
getNumberOfJobs in interface JobStorepublic int getNumberOfTriggers(SchedulingContext ctxt)
Get the number of s that are
stored in the TriggerJobsStore.
getNumberOfTriggers in interface JobStorepublic int getNumberOfCalendars(SchedulingContext ctxt)
Get the number of s that are
stored in the CalendarJobsStore.
getNumberOfCalendars in interface JobStorepublic String[] getJobNames(SchedulingContext ctxt, String groupName)
Get the names of all of the s that
have the given group name.
Job
getJobNames in interface JobStorepublic String[] getCalendarNames(SchedulingContext ctxt)
Get the names of all of the s
in the CalendarJobStore.
If there are no Calendars in the given group name, the result should be
a zero-length array (not null).
getCalendarNames in interface JobStorepublic String[] getTriggerNames(SchedulingContext ctxt, String groupName)
Get the names of all of the s
that have the given group name.
Trigger
getTriggerNames in interface JobStorepublic String[] getJobGroupNames(SchedulingContext ctxt)
Get the names of all of the
groups.
Job
getJobGroupNames in interface JobStorepublic String[] getTriggerGroupNames(SchedulingContext ctxt)
Get the names of all of the
groups.
Trigger
getTriggerGroupNames in interface JobStorepublic Trigger[] getTriggersForJob(SchedulingContext ctxt, String jobName, String groupName)
Get all of the Triggers that are associated to the given Job.
If there are no matches, a zero-length array should be returned.
getTriggersForJob in interface JobStoreprotected ArrayList getTriggerWrappersForJob(String jobName, String groupName)
public void pauseTrigger(SchedulingContext ctxt, String triggerName, String groupName)
Pause the with the given name.
Trigger
pauseTrigger in interface JobStoreJobStore.resumeTrigger(SchedulingContext, String, String)public void pauseTriggerGroup(SchedulingContext ctxt, String groupName)
Pause all of the in the given group.
Triggers
The JobStore should "remember" that the group is paused, and impose the pause on any new triggers that are added to the group while the group is paused.
pauseTriggerGroup in interface JobStoreJobStore.resumeTriggerGroup(SchedulingContext, String)public void pauseJob(SchedulingContext ctxt, String jobName, String groupName)
Pause the with the given
name - by pausing all of its current JobDetailTriggers.
pauseJob in interface JobStoreJobStore.resumeJob(SchedulingContext, String, String)public void pauseJobGroup(SchedulingContext ctxt, String groupName)
Pause all of the in the
given group - by pausing all of their JobDetailsTriggers.
The JobStore should "remember" that the group is paused, and impose the pause on any new jobs that are added to the group while the group is paused.
pauseJobGroup in interface JobStoreJobStore.resumeJobGroup(SchedulingContext, String)public void resumeTrigger(SchedulingContext ctxt, String triggerName, String groupName)
Resume (un-pause) the with the given
name.
Trigger
If the Trigger missed one or more fire-times, then the
Trigger's misfire instruction will be applied.
resumeTrigger in interface JobStoreJobStore.pauseTrigger(SchedulingContext, String, String)public void resumeTriggerGroup(SchedulingContext ctxt, String groupName)
Resume (un-pause) all of the in the
given group.
Triggers
If any Trigger missed one or more fire-times, then the
Trigger's misfire instruction will be applied.
resumeTriggerGroup in interface JobStoreJobStore.pauseTriggerGroup(SchedulingContext, String)public void resumeJob(SchedulingContext ctxt, String jobName, String groupName)
Resume (un-pause) the with
the given name.
JobDetail
If any of the Job'sTrigger s missed one
or more fire-times, then the Trigger's misfire
instruction will be applied.
resumeJob in interface JobStoreJobStore.pauseJob(SchedulingContext, String, String)public void resumeJobGroup(SchedulingContext ctxt, String groupName)
Resume (un-pause) all of the
in the given group.
JobDetails
If any of the Job s had Trigger s that
missed one or more fire-times, then the Trigger's
misfire instruction will be applied.
resumeJobGroup in interface JobStoreJobStore.pauseJobGroup(SchedulingContext, String)public void pauseAll(SchedulingContext ctxt)
Pause all triggers - equivalent of calling pauseTriggerGroup(group)
on every group.
When resumeAll() is called (to un-pause), trigger misfire
instructions WILL be applied.
pauseAll in interface JobStoreresumeAll(SchedulingContext),
pauseTriggerGroup(SchedulingContext, String)public void resumeAll(SchedulingContext ctxt)
Resume (un-pause) all triggers - equivalent of calling resumeTriggerGroup(group)
on every group.
If any Trigger missed one or more fire-times, then the
Trigger's misfire instruction will be applied.
resumeAll in interface JobStorepauseAll(SchedulingContext)protected boolean applyMisfire(org.quartz.simpl.TriggerWrapper tw)
protected String getFiredTriggerRecordId()
public Trigger acquireNextTrigger(SchedulingContext ctxt, long noLaterThan)
Get a handle to the next trigger to be fired, and mark it as 'reserved' by the calling scheduler.
acquireNextTrigger in interface JobStorenoLaterThan - If > 0, the JobStore should only return a Trigger
that will fire no later than the time represented in this value as
milliseconds.releaseAcquiredTrigger(SchedulingContext, Trigger)public void releaseAcquiredTrigger(SchedulingContext ctxt, Trigger trigger)
Inform the JobStore that the scheduler no longer plans to
fire the given Trigger, that it had previously acquired
(reserved).
releaseAcquiredTrigger in interface JobStorepublic TriggerFiredBundle triggerFired(SchedulingContext ctxt, Trigger trigger)
Inform the JobStore that the scheduler is now firing the
given Trigger (executing its associated Job),
that it had previously acquired (reserved).
triggerFired in interface JobStorepublic void triggeredJobComplete(SchedulingContext ctxt, Trigger trigger, JobDetail jobDetail, int triggerInstCode)
Inform the JobStore that the scheduler has completed the
firing of the given Trigger (and the execution its
associated Job), and that the
in the given JobDataMapJobDetail should be updated if the Job
is stateful.
triggeredJobComplete in interface JobStoreprotected void setAllTriggersOfJobToState(String jobName, String jobGroup, int state)
protected String peekTriggers()
public Set getPausedTriggerGroups(SchedulingContext ctxt) throws JobPersistenceException
getPausedTriggerGroups in interface JobStoreJobPersistenceExceptionJobStore.getPausedTriggerGroups(org.quartz.core.SchedulingContext)public void setInstanceId(String schedInstId)
JobStoreInform the JobStore of the Scheduler instance's Id,
prior to initialize being invoked.
setInstanceId in interface JobStorepublic void setInstanceName(String schedName)
JobStoreInform the JobStore of the Scheduler instance's name,
prior to initialize being invoked.
setInstanceName in interface JobStoreCopyright © 2014. All rights reserved.