Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.quartz.impl.jdbcjobstore
Class DBSemaphore

    java.lang.Object
      org.quartz.impl.jdbcjobstore.DBSemaphore

All Implemented Interfaces:
  Constants, Semaphore, StdJDBCConstants, TablePrefixAware

Direct Known Subclasses:
  StdRowLockSemaphore, UpdateLockRowSemaphore

    public abstract class DBSemaphore

extends Object
implements Semaphore, Constants, StdJDBCConstants, TablePrefixAware

Base class for database based lock handlers for providing thread/resource locking in order to protect resources from being altered by multiple threads at the same time.

Field Summary

Fields inherited from interface org.quartz.impl.jdbcjobstore.StdJDBCConstants
`COUNT_MISFIRED_TRIGGERS_IN_STATES, DELETE_BLOB_TRIGGER, DELETE_CALENDAR, DELETE_CRON_TRIGGER, DELETE_FIRED_TRIGGER, DELETE_FIRED_TRIGGERS, DELETE_INSTANCES_FIRED_TRIGGERS, DELETE_JOB_DETAIL, DELETE_JOB_LISTENERS, DELETE_NO_RECOVERY_FIRED_TRIGGERS, DELETE_PAUSED_TRIGGER_GROUP, DELETE_PAUSED_TRIGGER_GROUPS, DELETE_SCHEDULER_STATE, DELETE_SIMPLE_TRIGGER, DELETE_TRIGGER, DELETE_TRIGGER_LISTENERS, DELETE_VOLATILE_FIRED_TRIGGERS, INSERT_BLOB_TRIGGER, INSERT_CALENDAR, INSERT_CRON_TRIGGER, INSERT_FIRED_TRIGGER, INSERT_JOB_DETAIL, INSERT_JOB_LISTENER, INSERT_PAUSED_TRIGGER_GROUP, INSERT_SCHEDULER_STATE, INSERT_SIMPLE_TRIGGER, INSERT_TRIGGER, INSERT_TRIGGER_LISTENER, SELECT_BLOB_TRIGGER, SELECT_CALENDAR, SELECT_CALENDAR_EXISTENCE, SELECT_CALENDARS, SELECT_CRON_TRIGGER, SELECT_FIRED_TRIGGER, SELECT_FIRED_TRIGGER_GROUP, SELECT_FIRED_TRIGGER_INSTANCE_NAMES, SELECT_FIRED_TRIGGERS, SELECT_FIRED_TRIGGERS_OF_JOB, SELECT_FIRED_TRIGGERS_OF_JOB_GROUP, SELECT_INSTANCES_FIRED_TRIGGERS, SELECT_INSTANCES_RECOVERABLE_FIRED_TRIGGERS, SELECT_JOB_DETAIL, SELECT_JOB_EXECUTION_COUNT, SELECT_JOB_EXISTENCE, SELECT_JOB_FOR_TRIGGER, SELECT_JOB_GROUPS, SELECT_JOB_LISTENERS, SELECT_JOB_STATEFUL, SELECT_JOBS_IN_GROUP, SELECT_MISFIRED_TRIGGERS, SELECT_MISFIRED_TRIGGERS_IN_GROUP_IN_STATE, SELECT_MISFIRED_TRIGGERS_IN_STATE, SELECT_MISFIRED_TRIGGERS_IN_STATES, SELECT_NEXT_FIRE_TIME, SELECT_NEXT_TRIGGER_TO_ACQUIRE, SELECT_NUM_CALENDARS, SELECT_NUM_JOBS, SELECT_NUM_TRIGGERS, SELECT_NUM_TRIGGERS_FOR_JOB, SELECT_NUM_TRIGGERS_IN_GROUP, SELECT_PAUSED_TRIGGER_GROUP, SELECT_PAUSED_TRIGGER_GROUPS, SELECT_REFERENCED_CALENDAR, SELECT_SCHEDULER_STATE, SELECT_SCHEDULER_STATES, SELECT_SIMPLE_TRIGGER, SELECT_STATEFUL_JOBS_OF_TRIGGER_GROUP, SELECT_TRIGGER, SELECT_TRIGGER_DATA, SELECT_TRIGGER_EXISTENCE, SELECT_TRIGGER_FOR_FIRE_TIME, SELECT_TRIGGER_GROUPS, SELECT_TRIGGER_LISTENERS, SELECT_TRIGGER_STATE, SELECT_TRIGGER_STATUS, SELECT_TRIGGERS_FOR_CALENDAR, SELECT_TRIGGERS_FOR_JOB, SELECT_TRIGGERS_IN_GROUP, SELECT_TRIGGERS_IN_STATE, SELECT_VOLATILE_JOBS, SELECT_VOLATILE_TRIGGERS, TABLE_PREFIX_SUBST, UPDATE_BLOB_TRIGGER, UPDATE_CALENDAR, UPDATE_CRON_TRIGGER, UPDATE_INSTANCES_FIRED_TRIGGER_STATE, UPDATE_JOB_DATA, UPDATE_JOB_DETAIL, UPDATE_JOB_TRIGGER_STATES, UPDATE_JOB_TRIGGER_STATES_FROM_OTHER_STATE, UPDATE_SCHEDULER_STATE, UPDATE_SIMPLE_TRIGGER, UPDATE_TRIGGER, UPDATE_TRIGGER_GROUP_STATE, UPDATE_TRIGGER_GROUP_STATE_FROM_STATE, UPDATE_TRIGGER_GROUP_STATE_FROM_STATES, UPDATE_TRIGGER_SKIP_DATA, UPDATE_TRIGGER_STATE, UPDATE_TRIGGER_STATE_FROM_OTHER_STATES_BEFORE_TIME, UPDATE_TRIGGER_STATE_FROM_STATE, UPDATE_TRIGGER_STATE_FROM_STATES, UPDATE_TRIGGER_STATES_FROM_OTHER_STATES`

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
`DBSemaphore(String tablePrefix, String sql, String defaultSQL)`

Method Summary
`protected abstract void` | `executeSQL(Connection conn, String lockName, String expandedSQL)` Execute the SQL that will lock the proper database row.
`protected org.slf4j.Logger` | `getLog()`
`protected String` | `getSQL()`
`protected String` | `getTablePrefix()`
`boolean` | `isLockOwner(Connection conn, String lockName)` Determine whether the calling thread owns a lock on the identified resource.
`boolean` | `obtainLock(Connection conn, String lockName)` Grants a lock on the identified resource to the calling thread (blocking until it is available).
`void` | `releaseLock(Connection conn, String lockName)` Release the lock on the identified resource if it is held by the calling thread.
`boolean` | `requiresConnection()` This Semaphore implementation does use the database.
`protected void` | `setSQL(String sql)`
`void` | `setTablePrefix(String tablePrefix)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### DBSemaphore

    public DBSemaphore(String tablePrefix,
                       String sql,
                       String defaultSQL)

Method Detail

### getLog

    protected org.slf4j.Logger getLog()

### executeSQL

    protected abstract void executeSQL(Connection conn,
                                       String lockName,
                                       String expandedSQL)
                                throws LockException

  Execute the SQL that will lock the proper database row.

  Throws:
    `LockException`

### obtainLock

    public boolean obtainLock(Connection conn,
                              String lockName)
                       throws LockException

  Grants a lock on the identified resource to the calling thread (blocking until it is available).

  Specified by:
    `obtainLock` in interface `Semaphore`
  Parameters:
    `conn` - Database connection used to establish lock. Can be null if ``Semaphore.requiresConnection()`` returns false.
  Returns:
    true if the lock was obtained.
  Throws:
    `LockException`

### releaseLock

    public void releaseLock(Connection conn,
                            String lockName)

  Release the lock on the identified resource if it is held by the calling thread.

  Specified by:
    `releaseLock` in interface `Semaphore`
  Parameters:
    `conn` - Database connection used to establish lock. Can be null if ``Semaphore.requiresConnection()`` returns false.

### isLockOwner

    public boolean isLockOwner(Connection conn,
                               String lockName)

  Determine whether the calling thread owns a lock on the identified resource.

  Specified by:
    `isLockOwner` in interface `Semaphore`
  Parameters:
    `conn` - Database connection used to establish lock. Can be null if ``Semaphore.requiresConnection()`` returns false.

### requiresConnection

    public boolean requiresConnection()

  This Semaphore implementation does use the database.

  Specified by:
    `requiresConnection` in interface `Semaphore`
  See Also:
    `Semaphore.isLockOwner(Connection, String)`, `Semaphore.obtainLock(Connection, String)`, `Semaphore.releaseLock(Connection, String)`

### getSQL

    protected String getSQL()

### setSQL

    protected void setSQL(String sql)

### getTablePrefix

    protected String getTablePrefix()

### setTablePrefix

    public void setTablePrefix(String tablePrefix)

  Specified by:
    `setTablePrefix` in interface `TablePrefixAware`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright 2001-2012, Terracotta, Inc.