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, org.quartz.spi.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 connection pool. This JobStore will be used if SchedulerFactoryBean's "dataSource" property is set.

  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)`, `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, JobStoreSupport.VoidTransactionCallback`

  - ### Field Summary

    Fields
    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.

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

      `dontSetNonManagedTXConnectionAutoCommitFalse, nonManagedTxDsName, setTxIsolationLevelReadCommitted`

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

      `calendarCache, delegateClass, delegateClassName, dsName, firstCheckIn, instanceId, instanceName, lastCheckin, LOCK_CALENDAR_ACCESS, LOCK_JOB_ACCESS, LOCK_MISFIRE_ACCESS, LOCK_STATE_ACCESS, LOCK_TRIGGER_ACCESS, maxToRecoverAtATime, 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_STATEFUL, COL_IS_VOLATILE, COL_JOB_CLASS, COL_JOB_DATAMAP, COL_JOB_GROUP, COL_JOB_LISTENER, 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_START_TIME, COL_TIME_ZONE_ID, COL_TIMES_TRIGGERED, COL_TRIGGER_GROUP, COL_TRIGGER_LISTENER, 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_JOB_LISTENERS, TABLE_LOCKS, TABLE_PAUSED_TRIGGERS, TABLE_SCHEDULER_STATE, TABLE_SIMPLE_TRIGGERS, TABLE_TRIGGER_LISTENERS, TABLE_TRIGGERS, TTYPE_BLOB, TTYPE_CRON, TTYPE_SIMPLE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LocalDataSourceJobStore()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `closeConnection(Connection con)`
    `void` | `initialize(org.quartz.spi.ClassLoadHelper loadHelper, org.quartz.spi.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, acquireNextTrigger, calcFailedIfAfter, calendarExists, canUseProperties, checkBlockedState, cleanupConnection, cleanVolatileTriggerAndJobs, cleanVolatileTriggerAndJobs, clusterCheckIn, clusterRecover, commitConnection, doCheckin, doRecoverMisfires, executeInLock, executeInNonManagedTXLock, executeInNonManagedTXLock, executeWithoutLock, findFailedInstances, getAttributeRestoringConnection, getCalendarNames, getCalendarNames, getClassLoadHelper, getClusterCheckinInterval, getConnection, getDataSource, getDbRetryInterval, getDelegate, getDoubleCheckLockMisfireHandler, getDriverDelegateClass, getFiredTriggerRecordId, getInstanceId, getInstanceName, getJobGroupNames, getJobGroupNames, getJobNames, getJobNames, getLockHandler, getLog, getMakeThreadsDaemons, getMaxMisfiresToHandleAtATime, getMisfireThreshold, getMisfireTime, getNumberOfCalendars, getNumberOfCalendars, getNumberOfJobs, getNumberOfJobs, getNumberOfTriggers, getNumberOfTriggers, getPausedTriggerGroups, getPausedTriggerGroups, getSelectWithLockSQL, getTablePrefix, getTriggerGroupNames, getTriggerGroupNames, getTriggerNames, getTriggerNames, getTriggersForJob, getTriggersForJob, getTriggerState, getTriggerState, getUseDBLocks, isClustered, isDontSetAutoCommitFalse, isLockOnInsert, isThreadsInheritInitializersClassLoadContext, isTxIsolationLevelSerializable, jobExists, logWarnIfNonZero, pauseAll, pauseAll, pauseJob, pauseJobGroup, pauseTrigger, pauseTrigger, pauseTriggerGroup, pauseTriggerGroup, recoverJobs, recoverJobs, recoverMisfiredJobs, releaseAcquiredTrigger, releaseAcquiredTrigger, releaseLock, removeCalendar, removeCalendar, removeJob, removeJob, removeTrigger, removeTrigger, replaceTrigger, replaceTrigger, resumeAll, resumeAll, resumeJob, resumeJobGroup, resumeTrigger, resumeTrigger, resumeTriggerGroup, resumeTriggerGroup, retrieveCalendar, retrieveCalendar, retrieveJob, retrieveJob, retrieveTrigger, retrieveTrigger, retrieveTrigger, rollbackConnection, schedulerStarted, setClusterCheckinInterval, setDataSource, setDbRetryInterval, setDontSetAutoCommitFalse, setDoubleCheckLockMisfireHandler, setDriverDelegateClass, setInstanceId, setInstanceName, setIsClustered, setLockHandler, setLockOnInsert, setMakeThreadsDaemons, setMaxMisfiresToHandleAtATime, setMisfireThreshold, setSelectWithLockSQL, setTablePrefix, setThreadsInheritInitializersClassLoadContext, setTxIsolationLevelSerializable, setUseDBLocks, setUseProperties, signalSchedulingChange, storeCalendar, storeCalendar, storeJob, storeJob, storeJobAndTrigger, storeTrigger, storeTrigger, supportsPersistence, triggeredJobComplete, triggeredJobComplete, triggerExists, triggerFired, triggerFired, updateMisfiredTrigger`

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

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

- - ### Field Detail

    - #### 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 Detail

    - #### LocalDataSourceJobStore

          public LocalDataSourceJobStore()

  - ### Method Detail

    - #### initialize

          public void initialize(org.quartz.spi.ClassLoadHelper loadHelper,
                        org.quartz.spi.SchedulerSignaler signaler)
                          throws SchedulerConfigException

      Specified by:
        `initialize` in interface `org.quartz.spi.JobStore`
      Overrides:
        `initialize` in class `JobStoreCMT`
      Throws:
        `SchedulerConfigException`

    - #### closeConnection

          protected void closeConnection(Connection con)

      Overrides:
        `closeConnection` in class `JobStoreSupport`