java.lang.Object
net.javacrumbs.shedlock.support.StorageBasedLockProvider
net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider
All Implemented Interfaces:
net.javacrumbs.shedlock.core.ExtensibleLockProvider, net.javacrumbs.shedlock.core.LockProvider

public class JdbcTemplateLockProvider extends net.javacrumbs.shedlock.support.StorageBasedLockProvider
Lock provided by JdbcTemplate. It uses a table that contains lock_name and locked_until.
  1. Attempts to insert a new lock record. Since lock name is a primary key, it fails if the record already exists. As an optimization, we keep in-memory track of created lock records.
  2. If the insert succeeds (1 inserted row) we have the lock.
  3. If the insert failed due to duplicate key or we have skipped the insertion, we will try to update lock record using UPDATE tableName SET lock_until = :lockUntil WHERE name = :lockName AND lock_until <= :now
  4. If the update succeeded (1 updated row), we have the lock. If the update failed (0 updated rows) somebody else holds the lock
  5. When unlocking, lock_until is set to now.
  • Constructor Details

    • JdbcTemplateLockProvider

      public JdbcTemplateLockProvider(org.springframework.jdbc.core.JdbcTemplate jdbcTemplate)
    • JdbcTemplateLockProvider

      public JdbcTemplateLockProvider(org.springframework.jdbc.core.JdbcTemplate jdbcTemplate, org.springframework.transaction.PlatformTransactionManager transactionManager)
    • JdbcTemplateLockProvider

      public JdbcTemplateLockProvider(org.springframework.jdbc.core.JdbcTemplate jdbcTemplate, String tableName)
    • JdbcTemplateLockProvider

      public JdbcTemplateLockProvider(DataSource dataSource)
    • JdbcTemplateLockProvider

      public JdbcTemplateLockProvider(DataSource dataSource, String tableName)
    • JdbcTemplateLockProvider

      public JdbcTemplateLockProvider(org.springframework.jdbc.core.JdbcTemplate jdbcTemplate, org.springframework.transaction.PlatformTransactionManager transactionManager, String tableName)
    • JdbcTemplateLockProvider

      public JdbcTemplateLockProvider(JdbcTemplateLockProvider.Configuration configuration)