org.springframework.scheduling.quartz
Class SchedulerAccessor

java.lang.Object
  extended by org.springframework.scheduling.quartz.SchedulerAccessor
All Implemented Interfaces:
ResourceLoaderAware
Direct Known Subclasses:
SchedulerAccessorBean, SchedulerFactoryBean

public abstract class SchedulerAccessor
extends java.lang.Object
implements ResourceLoaderAware

Common base class for accessing a Quartz Scheduler, i.e. for registering jobs, triggers and listeners on a org.quartz.Scheduler instance.

For concrete usage, check out the SchedulerFactoryBean and SchedulerAccessorBean classes.

Since:
2.5.6
Author:
Juergen Hoeller

Field Summary
private  java.util.Map<java.lang.String,Calendar> calendars
           
private  JobListener[] globalJobListeners
           
private  TriggerListener[] globalTriggerListeners
           
private  java.util.List<JobDetail> jobDetails
           
private  JobListener[] jobListeners
           
private  java.lang.String[] jobSchedulingDataLocations
           
protected  Log logger
           
private  boolean overwriteExistingJobs
           
protected  ResourceLoader resourceLoader
           
private  SchedulerListener[] schedulerListeners
           
private  PlatformTransactionManager transactionManager
           
private  TriggerListener[] triggerListeners
           
private  java.util.List<Trigger> triggers
           
 
Constructor Summary
SchedulerAccessor()
           
 
Method Summary
private  boolean addJobToScheduler(JobDetail jobDetail)
          Add the given job to the Scheduler, if it doesn't already exist.
private  boolean addTriggerToScheduler(Trigger trigger)
          Add the given trigger to the Scheduler, if it doesn't already exist.
protected abstract  Scheduler getScheduler()
          Template method that determines the Scheduler to operate on.
protected  void registerJobsAndTriggers()
          Register jobs and triggers (within a transaction, if possible).
protected  void registerListeners()
          Register all specified listeners with the Scheduler.
 void setCalendars(java.util.Map<java.lang.String,Calendar> calendars)
          Register a list of Quartz Calendar objects with the Scheduler that this FactoryBean creates, to be referenced by Triggers.
 void setGlobalJobListeners(JobListener[] globalJobListeners)
          Specify global Quartz JobListeners to be registered with the Scheduler.
 void setGlobalTriggerListeners(TriggerListener[] globalTriggerListeners)
          Specify global Quartz TriggerListeners to be registered with the Scheduler.
 void setJobDetails(JobDetail[] jobDetails)
          Register a list of JobDetail objects with the Scheduler that this FactoryBean creates, to be referenced by Triggers.
 void setJobListeners(JobListener[] jobListeners)
          Specify named Quartz JobListeners to be registered with the Scheduler.
 void setJobSchedulingDataLocation(java.lang.String jobSchedulingDataLocation)
          Set the location of a Quartz job definition XML file that follows the "job_scheduling_data_1_5" XSD.
 void setJobSchedulingDataLocations(java.lang.String[] jobSchedulingDataLocations)
          Set the locations of Quartz job definition XML files that follow the "job_scheduling_data_1_5" XSD.
 void setOverwriteExistingJobs(boolean overwriteExistingJobs)
          Set whether any jobs defined on this SchedulerFactoryBean should overwrite existing job definitions.
 void setResourceLoader(ResourceLoader resourceLoader)
          Set the ResourceLoader that this object runs in.
 void setSchedulerListeners(SchedulerListener[] schedulerListeners)
          Specify Quartz SchedulerListeners to be registered with the Scheduler.
 void setTransactionManager(PlatformTransactionManager transactionManager)
          Set the transaction manager to be used for registering jobs and triggers that are defined by this SchedulerFactoryBean.
 void setTriggerListeners(TriggerListener[] triggerListeners)
          Specify named Quartz TriggerListeners to be registered with the Scheduler.
 void setTriggers(Trigger[] triggers)
          Register a list of Trigger objects with the Scheduler that this FactoryBean creates.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected final Log logger

overwriteExistingJobs

private boolean overwriteExistingJobs

jobSchedulingDataLocations

private java.lang.String[] jobSchedulingDataLocations

jobDetails

private java.util.List<JobDetail> jobDetails

calendars

private java.util.Map<java.lang.String,Calendar> calendars

triggers

private java.util.List<Trigger> triggers

schedulerListeners

private SchedulerListener[] schedulerListeners

globalJobListeners

private JobListener[] globalJobListeners

jobListeners

private JobListener[] jobListeners

globalTriggerListeners

private TriggerListener[] globalTriggerListeners

triggerListeners

private TriggerListener[] triggerListeners

transactionManager

private PlatformTransactionManager transactionManager

resourceLoader

protected ResourceLoader resourceLoader
Constructor Detail

SchedulerAccessor

public SchedulerAccessor()
Method Detail

setOverwriteExistingJobs

public void setOverwriteExistingJobs(boolean overwriteExistingJobs)
Set whether any jobs defined on this SchedulerFactoryBean should overwrite existing job definitions. Default is "false", to not overwrite already registered jobs that have been read in from a persistent job store.


setJobSchedulingDataLocation

public void setJobSchedulingDataLocation(java.lang.String jobSchedulingDataLocation)
Set the location of a Quartz job definition XML file that follows the "job_scheduling_data_1_5" XSD. Can be specified to automatically register jobs that are defined in such a file, possibly in addition to jobs defined directly on this SchedulerFactoryBean.

See Also:
org.quartz.xml.JobSchedulingDataProcessor

setJobSchedulingDataLocations

public void setJobSchedulingDataLocations(java.lang.String[] jobSchedulingDataLocations)
Set the locations of Quartz job definition XML files that follow the "job_scheduling_data_1_5" XSD. Can be specified to automatically register jobs that are defined in such files, possibly in addition to jobs defined directly on this SchedulerFactoryBean.

See Also:
org.quartz.xml.JobSchedulingDataProcessor

setJobDetails

public void setJobDetails(JobDetail[] jobDetails)
Register a list of JobDetail objects with the Scheduler that this FactoryBean creates, to be referenced by Triggers.

This is not necessary when a Trigger determines the JobDetail itself: In this case, the JobDetail will be implicitly registered in combination with the Trigger.

See Also:
setTriggers(Trigger[]), org.quartz.JobDetail, JobDetailBean, JobDetailAwareTrigger, org.quartz.Trigger#setJobName

setCalendars

public void setCalendars(java.util.Map<java.lang.String,Calendar> calendars)
Register a list of Quartz Calendar objects with the Scheduler that this FactoryBean creates, to be referenced by Triggers.

Parameters:
calendars - Map with calendar names as keys as Calendar objects as values
See Also:
org.quartz.Calendar, org.quartz.Trigger#setCalendarName

setTriggers

public void setTriggers(Trigger[] triggers)
Register a list of Trigger objects with the Scheduler that this FactoryBean creates.

If the Trigger determines the corresponding JobDetail itself, the job will be automatically registered with the Scheduler. Else, the respective JobDetail needs to be registered via the "jobDetails" property of this FactoryBean.

See Also:
setJobDetails(JobDetail[]), org.quartz.JobDetail, JobDetailAwareTrigger, CronTriggerBean, SimpleTriggerBean

setSchedulerListeners

public void setSchedulerListeners(SchedulerListener[] schedulerListeners)
Specify Quartz SchedulerListeners to be registered with the Scheduler.


setGlobalJobListeners

public void setGlobalJobListeners(JobListener[] globalJobListeners)
Specify global Quartz JobListeners to be registered with the Scheduler. Such JobListeners will apply to all Jobs in the Scheduler.


setJobListeners

public void setJobListeners(JobListener[] jobListeners)
Specify named Quartz JobListeners to be registered with the Scheduler. Such JobListeners will only apply to Jobs that explicitly activate them via their name.

See Also:
org.quartz.JobListener#getName, org.quartz.JobDetail#addJobListener, JobDetailBean.setJobListenerNames(java.lang.String[])

setGlobalTriggerListeners

public void setGlobalTriggerListeners(TriggerListener[] globalTriggerListeners)
Specify global Quartz TriggerListeners to be registered with the Scheduler. Such TriggerListeners will apply to all Triggers in the Scheduler.


setTriggerListeners

public void setTriggerListeners(TriggerListener[] triggerListeners)
Specify named Quartz TriggerListeners to be registered with the Scheduler. Such TriggerListeners will only apply to Triggers that explicitly activate them via their name.

See Also:
org.quartz.TriggerListener#getName, org.quartz.Trigger#addTriggerListener, CronTriggerBean.setTriggerListenerNames(java.lang.String[]), SimpleTriggerBean.setTriggerListenerNames(java.lang.String[])

setTransactionManager

public void setTransactionManager(PlatformTransactionManager transactionManager)
Set the transaction manager to be used for registering jobs and triggers that are defined by this SchedulerFactoryBean. Default is none; setting this only makes sense when specifying a DataSource for the Scheduler.


setResourceLoader

public void setResourceLoader(ResourceLoader resourceLoader)
Description copied from interface: ResourceLoaderAware
Set the ResourceLoader that this object runs in.

This might be a ResourcePatternResolver, which can be checked through instanceof ResourcePatternResolver. See also the ResourcePatternUtils.getResourcePatternResolver method.

Invoked after population of normal bean properties but before an init callback like InitializingBean's afterPropertiesSet or a custom init-method. Invoked before ApplicationContextAware's setApplicationContext.

Specified by:
setResourceLoader in interface ResourceLoaderAware
Parameters:
resourceLoader - ResourceLoader object to be used by this object
See Also:
ResourcePatternResolver, ResourcePatternUtils.getResourcePatternResolver(org.springframework.core.io.ResourceLoader)

registerJobsAndTriggers

protected void registerJobsAndTriggers()
                                throws SchedulerException
Register jobs and triggers (within a transaction, if possible).

Throws:
SchedulerException

addJobToScheduler

private boolean addJobToScheduler(JobDetail jobDetail)
                           throws SchedulerException
Add the given job to the Scheduler, if it doesn't already exist. Overwrites the job in any case if "overwriteExistingJobs" is set.

Parameters:
jobDetail - the job to add
Returns:
true if the job was actually added, false if it already existed before
Throws:
SchedulerException
See Also:
setOverwriteExistingJobs(boolean)

addTriggerToScheduler

private boolean addTriggerToScheduler(Trigger trigger)
                               throws SchedulerException
Add the given trigger to the Scheduler, if it doesn't already exist. Overwrites the trigger in any case if "overwriteExistingJobs" is set.

Parameters:
trigger - the trigger to add
Returns:
true if the trigger was actually added, false if it already existed before
Throws:
SchedulerException
See Also:
setOverwriteExistingJobs(boolean)

registerListeners

protected void registerListeners()
                          throws SchedulerException
Register all specified listeners with the Scheduler.

Throws:
SchedulerException

getScheduler

protected abstract Scheduler getScheduler()
Template method that determines the Scheduler to operate on. To be implemented by subclasses.