public class TransactionLockFactory extends GenericService
TransactionLockFactory tlf = getTransactionLockFactory(); TransactionLockService lockService = tlf.getServiceInstance(this); try { lockService.acquireTransactionLock(); } catch (DeadlockException de) { // log something } try { // perform your work in a transaction } finally { try { lockService.releaseTransactionLock(); } catch (LockManagerException lme) { // log something } }By default, the key used to retrieve the lock is the current profile id. To change this, pass in your own key to
getServiceInstance
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLASS_VERSION
Class version string
|
SERVICE_INFO_KEY
DEFAULT_LOG_TRACE_STATUS
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
Constructor and Description |
---|
TransactionLockFactory() |
Modifier and Type | Method and Description |
---|---|
ClientLockManager |
getLocalLockManager()
Return the lock manager to use if
useLocksAroundTransactions
is true. |
RepositoryItem |
getProfile()
Return the current user profile.
|
TransactionLockService |
getServiceInstance()
Get a new TransactionLockService with all the default settings..
|
TransactionLockService |
getServiceInstance(ApplicationLogging pLogger)
Get a new TransactionLockService with all the default settings.
|
TransactionLockService |
getServiceInstance(java.lang.String pLockName)
Get a new TransactionLockService but instead of using the default
transactionLockName, use the given lock name.
|
TransactionLockService |
getServiceInstance(java.lang.String pLockName,
ApplicationLogging pLogger)
Get a new TransactionLockService but instead of using the default
transactionLockName, use the given lock name.
|
protected java.lang.String |
getTransactionLockName()
Generate the lock name to use when acquiring and releasing locks
in
acquireTransactionLock and releaseTransactionLock . |
boolean |
isUseLocksAroundTransactions()
Inquire whether to use a local lock manager to obtain a lock
before starting transactions, and to release the
lock after committing transactions.
|
void |
setLocalLockManager(ClientLockManager pLocalLockManager)
Specify the lock manager to use if
useLocksAroundTransactions
is true. |
void |
setUseLocksAroundTransactions(boolean pUseLocksAroundTransactions)
Specify whether to use a local lock manager to obtain a lock
before starting transactions and to release the lock after
committing transacations.
|
addLogListener, createAdminServlet, doStartService, doStopService, getAbsoluteName, getAdminServlet, getAdminServletOutputStreamEncoding, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isAdminServletUseServletOutputStream, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setAdminServletOutputStreamEncoding, setAdminServletUseServletOutputStream, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogDebugTrace, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
public void setUseLocksAroundTransactions(boolean pUseLocksAroundTransactions)
If this property is set to true, locking will be used to prevent one
user from trying to modify orders in multiple concurrent threads.
This has a small performance impact as we obtain and release the lock,
but minimizes the possibility of concurrent update exceptions if
two threads try to modify the same order for the same user.
The default value for useLocksAroundTransactions
is true.
public boolean isUseLocksAroundTransactions()
public void setLocalLockManager(ClientLockManager pLocalLockManager)
useLocksAroundTransactions
is true.public ClientLockManager getLocalLockManager()
useLocksAroundTransactions
is true.public RepositoryItem getProfile()
RepositoryItem
valuepublic TransactionLockService getServiceInstance()
public TransactionLockService getServiceInstance(java.lang.String pLockName)
pLockName
- The name to use when acquiring and releasing locks.public TransactionLockService getServiceInstance(ApplicationLogging pLogger)
pLogger
- The logger used by the returned TransactionLockServicepublic TransactionLockService getServiceInstance(java.lang.String pLockName, ApplicationLogging pLogger)
pLockName
- The name to use when acquiring and releasing locks.pLogger
- The logger used by the returned TransactionLockServiceprotected java.lang.String getTransactionLockName()
acquireTransactionLock
and releaseTransactionLock
.
By default this returns the repository id of the current user profile,
generating an error message and returning null if no profile is available.
Subclasses may override this behavior to choose a different locking
strategy.