Package org.springframework.scheduling.quartz

# Class LocalDataSourceJobStore

java.lang.Object
org.quartz.impl.jdbcjobstore.JobStoreSupport
org.quartz.impl.jdbcjobstore.JobStoreCMT
org.springframework.scheduling.quartz.LocalDataSourceJobStore

All Implemented Interfaces:
  `Constants`, `JobStore`

public class LocalDataSourceJobStore extends JobStoreCMT
Subclass of Quartz's `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:
  - `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)`

## Nested Class Summary

## Nested classes/interfaces inherited from class org.quartz.impl.jdbcjobstore.JobStoreSupport

`JobStoreSupport.RecoverMisfiredJobsResult, JobStoreSupport.TransactionCallback<T extends Object>, JobStoreSupport.TransactionValidator<T extends Object>, JobStoreSupport.VoidTransactionCallback`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`NON_TX_DATA_SOURCE_PREFIX`
Name used for the non-transactional ConnectionProvider for Quartz.
`static final String`
`TX_DATA_SOURCE_PREFIX`
Name used for the transactional ConnectionProvider for Quartz.

### Fields inherited from class org.quartz.impl.jdbcjobstore.JobStoreCMT

`dontSetNonManagedTXConnectionAutoCommitFalse, nonManagedTxDsName, setTxIsolationLevelReadCommitted`

### Fields inherited from class org.quartz.impl.jdbcjobstore.JobStoreSupport

`calendarCache, delegateClass, delegateClassName, delegateInitString, dsName, firstCheckIn, instanceId, instanceName, lastCheckin, LOCK_STATE_ACCESS, LOCK_TRIGGER_ACCESS, maxToRecoverAtATime, sigChangeForTxCompletion, tablePrefix, useProperties`

### Fields inherited from interface org.quartz.impl.jdbcjobstore.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
Constructor
Description
`LocalDataSourceJobStore()`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`closeConnection(Connection con)`
`void`
`initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler)`

### Methods inherited from class org.quartz.impl.jdbcjobstore.JobStoreCMT

`executeInLock, getNonManagedTXConnection, getNonManagedTXDataSource, isDontSetNonManagedTXConnectionAutoCommitFalse, isTxIsolationLevelReadCommitted, setDontSetNonManagedTXConnectionAutoCommitFalse, setNonManagedTXDataSource, setTxIsolationLevelReadCommitted, shutdown`

### Methods inherited from class org.quartz.impl.jdbcjobstore.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`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### TX_DATA_SOURCE_PREFIX

public static final String TX_DATA_SOURCE_PREFIX
Name used for the transactional ConnectionProvider for Quartz. This provider will delegate to the local Spring-managed DataSource.

See Also:
  - `DBConnectionManager.addConnectionProvider(java.lang.String, org.quartz.utils.ConnectionProvider)`
  - `SchedulerFactoryBean.setDataSource(javax.sql.DataSource)`
  - Constant Field Values

### NON_TX_DATA_SOURCE_PREFIX

public static final String 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:
  - `DBConnectionManager.addConnectionProvider(java.lang.String, org.quartz.utils.ConnectionProvider)`
  - `SchedulerFactoryBean.setDataSource(javax.sql.DataSource)`
  - Constant Field Values

## Constructor Details

### LocalDataSourceJobStore

public LocalDataSourceJobStore()

## Method Details

### initialize

public void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler) throws SchedulerConfigException

Specified by:
  `initialize` in interface `JobStore`
Overrides:
  `initialize` in class `JobStoreCMT`
Throws:
  `SchedulerConfigException`

### closeConnection

protected void closeConnection(Connection con)

Overrides:
  `closeConnection` in class `JobStoreSupport`