Class LocalDataSourceJobStore
JobStoreCMT class that delegates to a Spring-managed
DataSource instead of using a Quartz-managed JDBC connection pool.
This JobStore will be used if SchedulerFactoryBean's "dataSource" property is set.
You may also configure it explicitly, possibly as a custom subclass of this
LocalDataSourceJobStore or as an equivalent JobStoreCMT variant.
Supports both transactional and non-transactional DataSource access. With a non-XA DataSource and local Spring transactions, a single DataSource argument is sufficient. In case of an XA DataSource and global JTA transactions, SchedulerFactoryBean's "nonTransactionalDataSource" property should be set, passing in a non-XA DataSource that will not participate in global transactions.
Operations performed by this JobStore will properly participate in any kind of Spring-managed transaction, as it uses Spring's DataSourceUtils connection handling methods that are aware of a current transaction.
Note that all Quartz Scheduler operations that affect the persistent job store should usually be performed within active transactions, as they assume to get proper locks etc.
- Since:
- 1.1
- Author:
- Juergen Hoeller
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class JobStoreSupport
JobStoreSupport.RecoverMisfiredJobsResult, JobStoreSupport.TransactionCallback<T>, JobStoreSupport.TransactionValidator<T>, JobStoreSupport.VoidTransactionCallback -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringName used for the non-transactional ConnectionProvider for Quartz.static final StringName used for the transactional ConnectionProvider for Quartz.Fields inherited from class JobStoreCMT
dontSetNonManagedTXConnectionAutoCommitFalse, nonManagedTxDsName, setTxIsolationLevelReadCommittedFields inherited from class JobStoreSupport
calendarCache, delegateClass, delegateClassName, delegateInitString, dsName, firstCheckIn, instanceId, instanceName, lastCheckin, LOCK_STATE_ACCESS, LOCK_TRIGGER_ACCESS, maxToRecoverAtATime, sigChangeForTxCompletion, tablePrefix, usePropertiesFields inherited from interface Constants
ALIAS_COL_NEXT_FIRE_TIME, ALL_GROUPS_PAUSED, COL_BLOB, COL_CALENDAR, COL_CALENDAR_NAME, COL_CHECKIN_INTERVAL, COL_CRON_EXPRESSION, COL_DESCRIPTION, COL_END_TIME, COL_ENTRY_ID, COL_ENTRY_STATE, COL_FIRED_TIME, COL_INSTANCE_NAME, COL_IS_DURABLE, COL_IS_NONCONCURRENT, COL_IS_UPDATE_DATA, COL_IS_VOLATILE, COL_JOB_CLASS, COL_JOB_DATAMAP, COL_JOB_GROUP, COL_JOB_NAME, COL_LAST_CHECKIN_TIME, COL_LOCK_NAME, COL_MISFIRE_INSTRUCTION, COL_NEXT_FIRE_TIME, COL_PREV_FIRE_TIME, COL_PRIORITY, COL_REPEAT_COUNT, COL_REPEAT_INTERVAL, COL_REQUESTS_RECOVERY, COL_SCHED_TIME, COL_SCHEDULER_NAME, COL_START_TIME, COL_TIME_ZONE_ID, COL_TIMES_TRIGGERED, COL_TRIGGER_GROUP, COL_TRIGGER_NAME, COL_TRIGGER_STATE, COL_TRIGGER_TYPE, DEFAULT_TABLE_PREFIX, STATE_ACQUIRED, STATE_BLOCKED, STATE_COMPLETE, STATE_DELETED, STATE_ERROR, STATE_EXECUTING, STATE_MISFIRED, STATE_PAUSED, STATE_PAUSED_BLOCKED, STATE_WAITING, TABLE_BLOB_TRIGGERS, TABLE_CALENDARS, TABLE_CRON_TRIGGERS, TABLE_FIRED_TRIGGERS, TABLE_JOB_DETAILS, TABLE_LOCKS, TABLE_PAUSED_TRIGGERS, TABLE_SCHEDULER_STATE, TABLE_SIMPLE_TRIGGERS, TABLE_TRIGGERS, TTYPE_BLOB, TTYPE_CAL_INT, TTYPE_CRON, TTYPE_DAILY_TIME_INT, TTYPE_SIMPLE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidvoidinitialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler) Methods inherited from class JobStoreCMT
executeInLock, getNonManagedTXConnection, getNonManagedTXDataSource, isDontSetNonManagedTXConnectionAutoCommitFalse, isTxIsolationLevelReadCommitted, setDontSetNonManagedTXConnectionAutoCommitFalse, setNonManagedTXDataSource, setTxIsolationLevelReadCommitted, shutdownMethods inherited from class JobStoreSupport
acquireNextTrigger, acquireNextTriggers, calcFailedIfAfter, calendarExists, canUseProperties, checkBlockedState, checkExists, checkExists, checkExists, checkExists, cleanupConnection, clearAllSchedulingData, clearAllSchedulingData, clearAndGetSignalSchedulingChangeOnTxCompletion, clusterCheckIn, clusterRecover, commitConnection, doCheckin, doRecoverMisfires, executeInNonManagedTXLock, executeWithoutLock, findFailedInstances, getAcquireRetryDelay, getAttributeRestoringConnection, getCalendarNames, getCalendarNames, getClassLoadHelper, getClusterCheckinInterval, getConnection, getDataSource, getDbRetryInterval, getDelegate, getDoubleCheckLockMisfireHandler, getDriverDelegateClass, getDriverDelegateInitString, getEstimatedTimeToReleaseAndAcquireTrigger, getFiredTriggerRecordId, getInstanceId, getInstanceName, getJobGroupNames, getJobGroupNames, getJobKeys, getJobNames, getLockHandler, getLog, getMakeThreadsDaemons, getMaxMisfiresToHandleAtATime, getMisfireThreshold, getMisfireTime, getNumberOfCalendars, getNumberOfCalendars, getNumberOfJobs, getNumberOfJobs, getNumberOfTriggers, getNumberOfTriggers, getPausedTriggerGroups, getPausedTriggerGroups, getSelectWithLockSQL, getTablePrefix, getThreadExecutor, getTriggerGroupNames, getTriggerGroupNames, getTriggerKeys, getTriggerNames, getTriggersForJob, getTriggersForJob, getTriggerState, getTriggerState, getUseDBLocks, isAcquireTriggersWithinLock, isClustered, isDontSetAutoCommitFalse, isLockOnInsert, isThreadsInheritInitializersClassLoadContext, isTxIsolationLevelSerializable, jobExists, logWarnIfNonZero, pauseAll, pauseAll, pauseJob, pauseJobs, pauseTrigger, pauseTrigger, pauseTriggerGroup, pauseTriggers, recoverJobs, recoverJobs, recoverMisfiredJobs, releaseAcquiredTrigger, releaseAcquiredTrigger, releaseLock, removeCalendar, removeCalendar, removeJob, removeJob, removeJobs, removeTrigger, removeTrigger, removeTriggers, replaceTrigger, replaceTrigger, resetTriggerFromErrorState, resumeAll, resumeAll, resumeJob, resumeJobs, resumeTrigger, resumeTrigger, resumeTriggerGroup, resumeTriggers, retrieveCalendar, retrieveCalendar, retrieveJob, retrieveJob, retrieveTrigger, retrieveTrigger, retryExecuteInNonManagedTXLock, rollbackConnection, schedulerPaused, schedulerResumed, schedulerStarted, setAcquireTriggersWithinLock, setClusterCheckinInterval, setDataSource, setDbRetryInterval, setDontSetAutoCommitFalse, setDoubleCheckLockMisfireHandler, setDriverDelegateClass, setDriverDelegateInitString, setInstanceId, setInstanceName, setIsClustered, setLockHandler, setLockOnInsert, setMakeThreadsDaemons, setMaxMisfiresToHandleAtATime, setMisfireThreshold, setSelectWithLockSQL, setTablePrefix, setThreadExecutor, setThreadPoolSize, setThreadsInheritInitializersClassLoadContext, setTxIsolationLevelSerializable, setUseDBLocks, setUseProperties, signalSchedulingChangeImmediately, signalSchedulingChangeOnTxCompletion, storeCalendar, storeCalendar, storeJob, storeJob, storeJobAndTrigger, storeJobsAndTriggers, storeTrigger, storeTrigger, supportsPersistence, triggeredJobComplete, triggeredJobComplete, triggerExists, triggerFired, triggersFired, updateMisfiredTrigger
-
Field Details
-
TX_DATA_SOURCE_PREFIX
Name used for the transactional ConnectionProvider for Quartz. This provider will delegate to the local Spring-managed DataSource.- See Also:
-
NON_TX_DATA_SOURCE_PREFIX
Name used for the non-transactional ConnectionProvider for Quartz. This provider will delegate to the local Spring-managed DataSource.- See Also:
-
-
Constructor Details
-
LocalDataSourceJobStore
public LocalDataSourceJobStore()
-
-
Method Details
-
initialize
public void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler) throws SchedulerConfigException - Specified by:
initializein interfaceJobStore- Overrides:
initializein classJobStoreCMT- Throws:
SchedulerConfigException
-
closeConnection
- Overrides:
closeConnectionin classJobStoreSupport
-