public class LocalDataSourceJobStore extends JobStoreCMT
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.
SchedulerFactoryBean.setDataSource(javax.sql.DataSource)
,
SchedulerFactoryBean.setNonTransactionalDataSource(javax.sql.DataSource)
,
SchedulerFactoryBean.getConfigTimeDataSource()
,
SchedulerFactoryBean.getConfigTimeNonTransactionalDataSource()
,
DataSourceUtils.doGetConnection(javax.sql.DataSource)
,
DataSourceUtils.releaseConnection(java.sql.Connection, javax.sql.DataSource)
JobStoreSupport.RecoverMisfiredJobsResult, JobStoreSupport.TransactionCallback<T>, JobStoreSupport.TransactionValidator<T>, JobStoreSupport.VoidTransactionCallback
Modifier and Type | Field and Description |
---|---|
static String |
NON_TX_DATA_SOURCE_PREFIX
Name used for the non-transactional ConnectionProvider for Quartz.
|
static String |
TX_DATA_SOURCE_PREFIX
Name used for the transactional ConnectionProvider for Quartz.
|
dontSetNonManagedTXConnectionAutoCommitFalse, nonManagedTxDsName, setTxIsolationLevelReadCommitted
calendarCache, delegateClass, delegateClassName, delegateInitString, dsName, firstCheckIn, instanceId, instanceName, lastCheckin, LOCK_STATE_ACCESS, LOCK_TRIGGER_ACCESS, maxToRecoverAtATime, sigChangeForTxCompletion, tablePrefix, useProperties
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 and Description |
---|
LocalDataSourceJobStore() |
Modifier and Type | Method and Description |
---|---|
protected void |
closeConnection(Connection con) |
void |
initialize(ClassLoadHelper loadHelper,
SchedulerSignaler signaler) |
executeInLock, getNonManagedTXConnection, getNonManagedTXDataSource, isDontSetNonManagedTXConnectionAutoCommitFalse, isTxIsolationLevelReadCommitted, setDontSetNonManagedTXConnectionAutoCommitFalse, setNonManagedTXDataSource, setTxIsolationLevelReadCommitted, shutdown
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
public static final String TX_DATA_SOURCE_PREFIX
public static final String NON_TX_DATA_SOURCE_PREFIX
public void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler) throws SchedulerConfigException
initialize
in interface JobStore
initialize
in class JobStoreCMT
SchedulerConfigException
protected void closeConnection(Connection con)
closeConnection
in class JobStoreSupport