public class GemfireTransactionManager extends AbstractPlatformTransactionManager implements InitializingBean, ResourceTransactionManager
PlatformTransactionManager
implementation
for the Pivotal GemFire CacheTransactionManager
.
Binds one or multiple GemFire Regions
for the specified GemFireCache
to the thread,
potentially allowing for one Region
per GemFireCache
model.
This local strategy is an alternative to executing cache operations within JTA transactions. Its advantage is that is able to work in any environment, for example a stand-alone application or a test suite. It is not able to provide XA transactions, for example to share transactions with data access.
By default, to prevent dirty reads, the GemFireCache
is configured to return copies rather then direct references
for get
data access operations. As a workaround, one could use explicitly deep copy objects before
making changes to them to avoid unnecessary copying on every fetch.
CopyHelper.copy(Object)
,
GemFireCache.setCopyOnRead(boolean)
,
CacheTransactionManager
,
Region
,
TransactionId
,
InitializingBean
,
PlatformTransactionManager
,
TransactionDefinition
,
AbstractPlatformTransactionManager
,
ResourceTransactionManager
,
TransactionSynchronizationManager
,
setCopyOnRead(boolean)
,
Serialized FormModifier and Type | Class and Description |
---|---|
protected static class |
GemfireTransactionManager.CacheHolder
Holder of GemFire cache transaction state.
|
protected static class |
GemfireTransactionManager.CacheTransactionObject
GemFire local transaction object.
|
AbstractPlatformTransactionManager.SuspendedResourcesHolder
Modifier and Type | Field and Description |
---|---|
protected static TimeUnit |
DEFAULT_RESUME_WAIT_TIME_UNIT |
logger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION
Constructor and Description |
---|
GemfireTransactionManager()
Constructs an instance of the
GemfireTransactionManager . |
GemfireTransactionManager(org.apache.geode.cache.GemFireCache cache)
Constructs an instance of the
GemfireTransactionManager initialized with
the given GemFireCache reference. |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet() |
protected void |
doBegin(Object transaction,
TransactionDefinition definition) |
protected void |
doCleanupAfterCompletion(Object transaction) |
protected void |
doCommit(DefaultTransactionStatus status) |
protected Object |
doGetTransaction() |
protected void |
doResume(Object transaction,
Object suspendedResources) |
protected void |
doRollback(DefaultTransactionStatus status) |
protected void |
doSetRollbackOnly(DefaultTransactionStatus status) |
protected Object |
doSuspend(Object transaction) |
org.apache.geode.cache.GemFireCache |
getCache()
Returns a reference to the
GemFireCache for which this transaction manager
will manage local cache transactions. |
protected org.apache.geode.cache.CacheTransactionManager |
getCacheTransactionManager() |
Object |
getResourceFactory() |
protected Long |
getResumeWaitTime()
Returns the timeout used to wait for the GemFire cache transaction to resume.
|
protected TimeUnit |
getResumeWaitTimeUnit()
Returns the
TimeUnit used in the wait timeout when resuming a GemFire cache transaction. |
boolean |
isCopyOnRead()
Indicates whether copy on read is set and used for fetch data access operations.
|
protected boolean |
isExistingTransaction(Object transaction) |
protected boolean |
isResumeWaitTimeSet()
Determines whether the user specified a wait time for resuming a GemFire cache transaction.
|
void |
setCache(org.apache.geode.cache.GemFireCache cache)
Sets a reference to the
GemFireCache for which this transaction manager
will manage local cache transactions. |
void |
setCopyOnRead(boolean copyOnRead)
Set whether the cache returns direct object references or copies of the objects it manages.
|
<K,V> void |
setRegion(org.apache.geode.cache.Region<K,V> region)
Sets the GemFire cache
Region as an alternative in setting in the GemFireCache directly. |
void |
setResumeWaitTime(Long resumeWaitTime)
Sets the timeout used to wait for the GemFire cache transaction to resume.
|
void |
setResumeWaitTimeUnit(TimeUnit resumeWaitTimeUnit)
Sets the
TimeUnit used in the wait timeout when resuming a GemFire cache transaction. |
protected boolean |
useSavepointForNestedTransaction() |
commit, determineTimeout, getDefaultTimeout, getTransaction, getTransactionSynchronization, invokeAfterCompletion, isFailEarlyOnGlobalRollbackOnly, isGlobalRollbackOnParticipationFailure, isNestedTransactionAllowed, isRollbackOnCommitFailure, isValidateExistingTransaction, newTransactionStatus, prepareForCommit, prepareSynchronization, prepareTransactionStatus, registerAfterCompletionWithExistingTransaction, resume, rollback, setDefaultTimeout, setFailEarlyOnGlobalRollbackOnly, setGlobalRollbackOnParticipationFailure, setNestedTransactionAllowed, setRollbackOnCommitFailure, setTransactionSynchronization, setTransactionSynchronizationName, setValidateExistingTransaction, shouldCommitOnGlobalRollbackOnly, suspend, triggerBeforeCommit, triggerBeforeCompletion
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
commit, getTransaction, rollback
protected static final TimeUnit DEFAULT_RESUME_WAIT_TIME_UNIT
public GemfireTransactionManager()
GemfireTransactionManager
.public GemfireTransactionManager(org.apache.geode.cache.GemFireCache cache)
GemfireTransactionManager
initialized with
the given GemFireCache
reference.cache
- reference to the GemFireCache
associated with cache transactions.GemFireCache
,
afterPropertiesSet()
public void afterPropertiesSet()
afterPropertiesSet
in interface InitializingBean
protected Object doGetTransaction() throws TransactionException
doGetTransaction
in class AbstractPlatformTransactionManager
TransactionException
protected boolean isExistingTransaction(Object transaction) throws TransactionException
isExistingTransaction
in class AbstractPlatformTransactionManager
TransactionException
protected void doBegin(Object transaction, TransactionDefinition definition) throws TransactionException
doBegin
in class AbstractPlatformTransactionManager
TransactionException
protected void doCommit(DefaultTransactionStatus status) throws TransactionException
doCommit
in class AbstractPlatformTransactionManager
TransactionException
protected Object doSuspend(Object transaction) throws TransactionException
doSuspend
in class AbstractPlatformTransactionManager
TransactionException
protected void doResume(Object transaction, Object suspendedResources) throws TransactionException
doResume
in class AbstractPlatformTransactionManager
TransactionException
protected void doRollback(DefaultTransactionStatus status) throws TransactionException
doRollback
in class AbstractPlatformTransactionManager
TransactionException
protected void doCleanupAfterCompletion(Object transaction)
doCleanupAfterCompletion
in class AbstractPlatformTransactionManager
protected void doSetRollbackOnly(DefaultTransactionStatus status)
doSetRollbackOnly
in class AbstractPlatformTransactionManager
protected final boolean useSavepointForNestedTransaction()
useSavepointForNestedTransaction
in class AbstractPlatformTransactionManager
public void setCache(org.apache.geode.cache.GemFireCache cache)
GemFireCache
for which this transaction manager
will manage local cache transactions.cache
- reference to the GemFireCache
.GemFireCache
public org.apache.geode.cache.GemFireCache getCache()
GemFireCache
for which this transaction manager
will manage local cache transactions.GemFireCache
.GemFireCache
protected org.apache.geode.cache.CacheTransactionManager getCacheTransactionManager()
public void setCopyOnRead(boolean copyOnRead)
CopyHelper.copy(Object)
in which case this setting
can be set to false
However, unless there is a measurable performance penalty, the recommendation is
to keep this setting to true
.copyOnRead
- boolean value indicating whether copies (default) rather then direct object references
will be returned on fetch operations.public boolean isCopyOnRead()
setCopyOnRead(boolean)
public <K,V> void setRegion(org.apache.geode.cache.Region<K,V> region)
Region
as an alternative in setting in the GemFireCache
directly.K
- Class
type of the Region
key.V
- Class
type of the Region
value.region
- GemFire cache Region
directly involved in the local cache transaction.IllegalArgumentException
- if Region
is null.Region
public Object getResourceFactory()
getResourceFactory
in interface ResourceTransactionManager
public void setResumeWaitTime(Long resumeWaitTime)
resumeWaitTime
- long value with the timeout used to wait for the GemFire cache transaction to resume.CacheTransactionManager.tryResume(TransactionId, long, TimeUnit)
protected Long getResumeWaitTime()
CacheTransactionManager.tryResume(TransactionId, long, TimeUnit)
protected boolean isResumeWaitTimeSet()
CacheTransactionManager.tryResume(TransactionId, long, TimeUnit)
,
getResumeWaitTime()
public void setResumeWaitTimeUnit(TimeUnit resumeWaitTimeUnit)
TimeUnit
used in the wait timeout when resuming a GemFire cache transaction.resumeWaitTimeUnit
- TimeUnit
used in the wait timeout when resuming a GemFire cache transaction.CacheTransactionManager.tryResume(TransactionId, long, TimeUnit)
protected TimeUnit getResumeWaitTimeUnit()
TimeUnit
used in the wait timeout when resuming a GemFire cache transaction.
Defaults to TimeUnit.SECONDS
.TimeUnit
used in the wait timeout when resuming a GemFire cache transaction.CacheTransactionManager.tryResume(TransactionId, long, TimeUnit)
Copyright © 2011–2019 Pivotal Software, Inc.. All rights reserved.