public class GemfireTransactionManager extends AbstractPlatformTransactionManager implements InitializingBean, ResourceTransactionManager
PlatformTransactionManager implementation
for the Pivotal GemFire CacheTransactionManager.
Binds one or multiple Pivotal 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 Form| Modifier and Type | Class and Description |
|---|---|
protected static class |
GemfireTransactionManager.CacheHolder
Holder of Pivotal GemFire cache transaction state.
|
protected static class |
GemfireTransactionManager.CacheTransactionObject
Pivotal 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 Pivotal GemFire cache transaction to resume.
|
protected TimeUnit |
getResumeWaitTimeUnit()
Returns the
TimeUnit used in the wait timeout when resuming a Pivotal 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 Pivotal 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 Pivotal GemFire cache
Region as an alternative in setting in the GemFireCache directly. |
void |
setResumeWaitTime(Long resumeWaitTime)
Sets the timeout used to wait for the Pivotal GemFire cache transaction to resume.
|
void |
setResumeWaitTimeUnit(TimeUnit resumeWaitTimeUnit)
Sets the
TimeUnit used in the wait timeout when resuming a Pivotal 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, triggerBeforeCompletionclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcommit, getTransaction, rollbackprotected 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 InitializingBeanprotected Object doGetTransaction() throws TransactionException
doGetTransaction in class AbstractPlatformTransactionManagerTransactionExceptionprotected boolean isExistingTransaction(Object transaction) throws TransactionException
isExistingTransaction in class AbstractPlatformTransactionManagerTransactionExceptionprotected void doBegin(Object transaction, TransactionDefinition definition) throws TransactionException
doBegin in class AbstractPlatformTransactionManagerTransactionExceptionprotected void doCommit(DefaultTransactionStatus status) throws TransactionException
doCommit in class AbstractPlatformTransactionManagerTransactionExceptionprotected Object doSuspend(Object transaction) throws TransactionException
doSuspend in class AbstractPlatformTransactionManagerTransactionExceptionprotected void doResume(Object transaction, Object suspendedResources) throws TransactionException
doResume in class AbstractPlatformTransactionManagerTransactionExceptionprotected void doRollback(DefaultTransactionStatus status) throws TransactionException
doRollback in class AbstractPlatformTransactionManagerTransactionExceptionprotected void doCleanupAfterCompletion(Object transaction)
doCleanupAfterCompletion in class AbstractPlatformTransactionManagerprotected void doSetRollbackOnly(DefaultTransactionStatus status)
doSetRollbackOnly in class AbstractPlatformTransactionManagerprotected final boolean useSavepointForNestedTransaction()
useSavepointForNestedTransaction in class AbstractPlatformTransactionManagerpublic void setCache(org.apache.geode.cache.GemFireCache cache)
GemFireCache for which this transaction manager
will manage local cache transactions.cache - reference to the GemFireCache.GemFireCachepublic org.apache.geode.cache.GemFireCache getCache()
GemFireCache for which this transaction manager
will manage local cache transactions.GemFireCache.GemFireCacheprotected 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 - Pivotal GemFire cache Region directly involved in the local cache transaction.IllegalArgumentException - if Region is null.Regionpublic Object getResourceFactory()
getResourceFactory in interface ResourceTransactionManagerpublic void setResumeWaitTime(Long resumeWaitTime)
resumeWaitTime - long value with the timeout used to wait for the Pivotal 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 Pivotal GemFire cache transaction.resumeWaitTimeUnit - TimeUnit used in the wait timeout when resuming a Pivotal GemFire cache transaction.CacheTransactionManager.tryResume(TransactionId, long, TimeUnit)protected TimeUnit getResumeWaitTimeUnit()
TimeUnit used in the wait timeout when resuming a Pivotal GemFire cache transaction.
Defaults to TimeUnit.SECONDS.TimeUnit used in the wait timeout when resuming a Pivotal GemFire cache transaction.CacheTransactionManager.tryResume(TransactionId, long, TimeUnit)Copyright © 2011–2021 Pivotal Software, Inc.. All rights reserved.