Package 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 java.lang.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.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
-
Fields inherited from interface org.quartz.impl.jdbcjobstore.StdJDBCConstants
COUNT_MISFIRED_TRIGGERS_IN_STATE, DELETE_ALL_BLOB_TRIGGERS, DELETE_ALL_CALENDARS, DELETE_ALL_CRON_TRIGGERS, DELETE_ALL_JOB_DETAILS, DELETE_ALL_PAUSED_TRIGGER_GRPS, DELETE_ALL_SIMPLE_TRIGGERS, DELETE_ALL_SIMPROP_TRIGGERS, DELETE_ALL_TRIGGERS, DELETE_BLOB_TRIGGER, DELETE_CALENDAR, DELETE_CRON_TRIGGER, DELETE_FIRED_TRIGGER, DELETE_FIRED_TRIGGERS, DELETE_INSTANCES_FIRED_TRIGGERS, DELETE_JOB_DETAIL, DELETE_NO_RECOVERY_FIRED_TRIGGERS, DELETE_PAUSED_TRIGGER_GROUP, DELETE_PAUSED_TRIGGER_GROUPS, DELETE_SCHEDULER_STATE, DELETE_SIMPLE_TRIGGER, DELETE_TRIGGER, INSERT_BLOB_TRIGGER, INSERT_CALENDAR, INSERT_CRON_TRIGGER, INSERT_FIRED_TRIGGER, INSERT_JOB_DETAIL, INSERT_PAUSED_TRIGGER_GROUP, INSERT_SCHEDULER_STATE, INSERT_SIMPLE_TRIGGER, INSERT_TRIGGER, SCHED_NAME_SUBST, 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_HAS_MISFIRED_TRIGGERS_IN_STATE, 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_NONCONCURRENT, SELECT_JOBS_IN_GROUP, SELECT_JOBS_IN_GROUP_LIKE, SELECT_MISFIRED_TRIGGERS, SELECT_MISFIRED_TRIGGERS_IN_GROUP_IN_STATE, SELECT_MISFIRED_TRIGGERS_IN_STATE, 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_TRIGGER, SELECT_TRIGGER_DATA, SELECT_TRIGGER_EXISTENCE, SELECT_TRIGGER_FOR_FIRE_TIME, SELECT_TRIGGER_GROUPS, SELECT_TRIGGER_GROUPS_FILTERED, SELECT_TRIGGER_STATE, SELECT_TRIGGER_STATUS, SELECT_TRIGGERS_FOR_CALENDAR, SELECT_TRIGGERS_FOR_JOB, SELECT_TRIGGERS_IN_GROUP, SELECT_TRIGGERS_IN_GROUP_LIKE, SELECT_TRIGGERS_IN_STATE, TABLE_PREFIX_SUBST, UPDATE_BLOB_TRIGGER, UPDATE_CALENDAR, UPDATE_CRON_TRIGGER, UPDATE_FIRED_TRIGGER, 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_FROM_STATE, UPDATE_TRIGGER_GROUP_STATE_FROM_STATES, UPDATE_TRIGGER_SKIP_DATA, UPDATE_TRIGGER_STATE, UPDATE_TRIGGER_STATE_FROM_STATE, UPDATE_TRIGGER_STATE_FROM_STATES, UPDATE_TRIGGER_STATES_FROM_OTHER_STATES
-
-
Constructor Summary
Constructors Constructor Description DBSemaphore(java.lang.String tablePrefix, java.lang.String schedName, java.lang.String defaultSQL, java.lang.String defaultInsertSQL)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract voidexecuteSQL(java.sql.Connection conn, java.lang.String lockName, java.lang.String theExpandedSQL, java.lang.String theExpandedInsertSQL)Execute the SQL that will lock the proper database row.protected org.slf4j.LoggergetLog()java.lang.StringgetSchedName()protected java.lang.StringgetSchedulerNameLiteral()protected java.lang.StringgetSQL()protected java.lang.StringgetTablePrefix()booleanisLockOwner(java.lang.String lockName)Determine whether the calling thread owns a lock on the identified resource.booleanobtainLock(java.sql.Connection conn, java.lang.String lockName)Grants a lock on the identified resource to the calling thread (blocking until it is available).voidreleaseLock(java.lang.String lockName)Release the lock on the identified resource if it is held by the calling thread.booleanrequiresConnection()This Semaphore implementation does use the database.protected voidsetInsertSQL(java.lang.String insertSql)voidsetSchedName(java.lang.String schedName)protected voidsetSQL(java.lang.String sql)voidsetTablePrefix(java.lang.String tablePrefix)
-
-
-
Method Detail
-
getLog
protected org.slf4j.Logger getLog()
-
executeSQL
protected abstract void executeSQL(java.sql.Connection conn, java.lang.String lockName, java.lang.String theExpandedSQL, java.lang.String theExpandedInsertSQL) throws LockExceptionExecute the SQL that will lock the proper database row.- Throws:
LockException
-
obtainLock
public boolean obtainLock(java.sql.Connection conn, java.lang.String lockName) throws LockExceptionGrants a lock on the identified resource to the calling thread (blocking until it is available).- Specified by:
obtainLockin interfaceSemaphore- Parameters:
conn- Database connection used to establish lock. Can be null ifreturns false.Semaphore.requiresConnection()- Returns:
- true if the lock was obtained.
- Throws:
LockException
-
releaseLock
public void releaseLock(java.lang.String lockName)
Release the lock on the identified resource if it is held by the calling thread.- Specified by:
releaseLockin interfaceSemaphore
-
isLockOwner
public boolean isLockOwner(java.lang.String lockName)
Determine whether the calling thread owns a lock on the identified resource.
-
requiresConnection
public boolean requiresConnection()
This Semaphore implementation does use the database.- Specified by:
requiresConnectionin interfaceSemaphore- See Also:
Semaphore.obtainLock(Connection, String),Semaphore.releaseLock(String)
-
getSQL
protected java.lang.String getSQL()
-
setSQL
protected void setSQL(java.lang.String sql)
-
setInsertSQL
protected void setInsertSQL(java.lang.String insertSql)
-
getSchedulerNameLiteral
protected java.lang.String getSchedulerNameLiteral()
-
getSchedName
public java.lang.String getSchedName()
-
setSchedName
public void setSchedName(java.lang.String schedName)
- Specified by:
setSchedNamein interfaceTablePrefixAware
-
getTablePrefix
protected java.lang.String getTablePrefix()
-
setTablePrefix
public void setTablePrefix(java.lang.String tablePrefix)
- Specified by:
setTablePrefixin interfaceTablePrefixAware
-
-