public class JTANonClusteredSemaphore extends java.lang.Object implements Semaphore
Transaction
aware.
It is most appropriate for use when using
JobStoreCMT
without clustering.
This Semaphore
implementation is not Quartz cluster safe.
When a lock is obtained/released but there is no active JTA
, then this Transaction
Semaphore
operates
just like
.
SimpleSemaphore
By default, this class looks for the
in JNDI under name "java:TransactionManager". If this is not where your Application Server
registers it, you can modify the JNDI lookup location using the
"transactionManagerJNDIName" property.
TransactionManager
IMPORTANT: This Semaphore implementation is currently experimental. It has been tested a limited amount on JBoss 4.0.3SP1. If you do choose to use it, any feedback would be most appreciated!
SimpleSemaphore
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
DEFAULT_TRANSACTION_MANANGER_LOCATION |
Constructor and Description |
---|
JTANonClusteredSemaphore() |
Modifier and Type | Method and Description |
---|---|
boolean |
isLockOwner(java.sql.Connection conn,
java.lang.String lockName)
Determine whether the calling thread owns a lock on the identified
resource.
|
boolean |
obtainLock(java.sql.Connection conn,
java.lang.String lockName)
Grants a lock on the identified resource to the calling thread (blocking
until it is available).
|
void |
releaseLock(java.sql.Connection conn,
java.lang.String lockName)
Release the lock on the identified resource if it is held by the calling
thread, unless currently in a JTA transaction.
|
boolean |
requiresConnection()
This Semaphore implementation does not use the database.
|
void |
setTransactionManagerJNDIName(java.lang.String transactionManagerJNDIName) |
public static final java.lang.String DEFAULT_TRANSACTION_MANANGER_LOCATION
public void setTransactionManagerJNDIName(java.lang.String transactionManagerJNDIName)
public boolean obtainLock(java.sql.Connection conn, java.lang.String lockName) throws LockException
obtainLock
in interface Semaphore
conn
- Database connection used to establish lock. Can be null if
Semaphore.requiresConnection()
returns false.LockException
public void releaseLock(java.sql.Connection conn, java.lang.String lockName) throws LockException
releaseLock
in interface Semaphore
conn
- Database connection used to establish lock. Can be null if
Semaphore.requiresConnection()
returns false.LockException
public boolean isLockOwner(java.sql.Connection conn, java.lang.String lockName)
isLockOwner
in interface Semaphore
conn
- Database connection used to establish lock. Can be null if
Semaphore.requiresConnection()
returns false.public boolean requiresConnection()
requiresConnection
in interface Semaphore
Semaphore.isLockOwner(Connection, String)
,
Semaphore.obtainLock(Connection, String)
,
Semaphore.releaseLock(Connection, String)