@Repository public class DefaultLockRepository extends Object implements LockRepository, InitializingBean
LockRepository
based on the
table from the script presented in the org/springframework/integration/jdbc/schema-*.sql
.
This repository can't be shared between different JdbcLockRegistry
instances.
Otherwise it opens a possibility to break Lock
contract,
where JdbcLockRegistry
uses non-shared ReentrantLock
s
for local synchronizations.
Modifier and Type | Field and Description |
---|---|
static String |
DEFAULT_TABLE_PREFIX
Default value for the table prefix property.
|
static int |
DEFAULT_TTL
Default value for the time-to-live property.
|
Constructor and Description |
---|
DefaultLockRepository(DataSource dataSource)
Constructor that initializes the client id that will be associated for
all the locks persisted by the store instance to a random
UUID . |
DefaultLockRepository(DataSource dataSource,
String id)
Constructor that allows the user to specify a client id that will
be associated for all the locks persisted by the store instance.
|
Modifier and Type | Method and Description |
---|---|
boolean |
acquire(String lock) |
void |
afterPropertiesSet() |
void |
close() |
void |
delete(String lock) |
void |
deleteExpired() |
boolean |
isAcquired(String lock) |
boolean |
renew(String lock) |
void |
setPrefix(String prefix)
Specify the prefix for target data base table used from queries.
|
void |
setRegion(String region)
A unique grouping identifier for all locks persisted with this store.
|
void |
setTimeToLive(int timeToLive)
Specify the time (in milliseconds) to expire dead locks.
|
public static final String DEFAULT_TABLE_PREFIX
public static final int DEFAULT_TTL
@Autowired public DefaultLockRepository(DataSource dataSource)
UUID
.dataSource
- the DataSource
used to maintain the lock repository.public DefaultLockRepository(DataSource dataSource, String id)
dataSource
- the DataSource
used to maintain the lock repository.id
- the client id to be associated with locks handled by the repository.public void setRegion(String region)
DEFAULT
.region
- the region name to setpublic void setPrefix(String prefix)
prefix
- the prefix to set (default INT_).public void setTimeToLive(int timeToLive)
timeToLive
- the time to expire dead locks.public void afterPropertiesSet()
afterPropertiesSet
in interface InitializingBean
@Transactional(propagation=REQUIRES_NEW) public void close()
close
in interface Closeable
close
in interface AutoCloseable
close
in interface LockRepository
@Transactional(propagation=REQUIRES_NEW) public void delete(String lock)
delete
in interface LockRepository
@Transactional(propagation=REQUIRES_NEW, isolation=SERIALIZABLE) public boolean acquire(String lock)
acquire
in interface LockRepository
@Transactional(propagation=REQUIRES_NEW, readOnly=true) public boolean isAcquired(String lock)
isAcquired
in interface LockRepository
@Transactional(propagation=REQUIRES_NEW) public void deleteExpired()
deleteExpired
in interface LockRepository
@Transactional(propagation=REQUIRES_NEW) public boolean renew(String lock)
renew
in interface LockRepository