Class JTA11TransactionController
- java.lang.Object
-
- org.eclipse.persistence.transaction.AbstractTransactionController
-
- org.eclipse.persistence.transaction.JTATransactionController
-
- org.eclipse.persistence.transaction.JTA11TransactionController
-
- All Implemented Interfaces:
ExternalTransactionController
- Direct Known Subclasses:
GlassfishTransactionController11
,JBossTransactionController11
,WebLogicTransactionController11
public class JTA11TransactionController extends JTATransactionController
Purpose: TransactionController extensions for JTA 1.1
Description: Implements the required behavior for controlling JTA 1.1 transactions. Specific JTA implementations may need to extend this class when special controller behavior is necessary.
The JTA
TransactionSynchronizationRegistry
must be obtained and set on the instance in order for a Synchronization listener to be registered against the transaction. This can be done either by extending this class and definingacquireTransactionSynchronizationRegistry()
to return the manager for the server, or by using this class and explicitly calling thesetTransactionSynchronizationRegistry()
method on it after the fact. e.g. TransactionSynchronizationRegistry tsr = controller.jndiLookup("java:comp/setTransactionSynchronizationRegistry"); controller.setTransactionManager(tsr);If a different listener needs to be used for synchronization, the SynchronizationListenerFactory should be set on the controller instance. The listener subclass should implement the factory interface, so that setting the factory is simply a matter of assigning an instance of the listener. e.g. controller.setSynchronizationListenerFactory( new DifferentServerSynchronizationListener()); The default listener factory creates instances of
JTATransactionListener
.- Since:
- 2.7.1
- See Also:
JTASynchronizationListener
,AbstractTransactionController
-
-
Field Summary
Fields Modifier and Type Field Description protected static jakarta.transaction.TransactionSynchronizationRegistry
defaultTsr
AllowsTransactionSynchronizationRegistry
to be set statically.static String
JNDI_TRANSACTION_SYNCHRONIZATION_REGISTRY
Common JNDI name ofTransactionSynchronizationRegistry
instance.protected jakarta.transaction.TransactionSynchronizationRegistry
tsr
Primary point of integration with JTA 1.1.-
Fields inherited from class org.eclipse.persistence.transaction.JTATransactionController
defaultTransactionManager, transactionManager
-
Fields inherited from class org.eclipse.persistence.transaction.AbstractTransactionController
activeUnitOfWorkThreadLocal, currentlyProcessedListeners, exceptionHandler, listenerFactory, numSessionsRequiringSequencingCallback, sequencingListeners, session, unitsOfWork
-
-
Constructor Summary
Constructors Constructor Description JTA11TransactionController()
PUBLIC: Return a new controller for use with acquired JTA 1.1 compliantTransactionSynchronizationRegistry
.JTA11TransactionController(jakarta.transaction.TransactionSynchronizationRegistry supplTsr, jakarta.transaction.TransactionManager supplTm)
PUBLIC: Return a new controller for use with supplied JTA 1.1 compliant synchronization objects registry.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected jakarta.transaction.TransactionSynchronizationRegistry
acquireTransactionSynchronizationRegistry()
INTERNAL: Obtain and return the JTA 1.1TransactionSynchronizationRegistry
on this platform.static jakarta.transaction.TransactionSynchronizationRegistry
getDefaultTransactionSynchronizationRegistry()
PUBLIC: Get the default JTA 1.1 synchronization objects registry being used.protected Object
getTransactionKey_impl(Object transaction)
INTERNAL: Return a key for the specified external transaction object.protected Object
getTransactionStatus_impl()
INTERNAL: Return the transaction status as an object.jakarta.transaction.TransactionSynchronizationRegistry
getTransactionSynchronizationRegistry()
PUBLIC: Return the synchronization objects registry used to control the JTA 1.1 transactions.boolean
isRolledBack_impl(Object status)
INTERNAL: Check whether the transaction is rolled back.protected void
markTransactionForRollback_impl()
INTERNAL: Mark the external transaction for rollback.protected void
registerSynchronization_impl(AbstractSynchronizationListener listener, Object txn)
INTERNAL: Register the specified synchronization listener with the given active transaction.static void
setDefaultTransactionSynchronizationRegistry(jakarta.transaction.TransactionSynchronizationRegistry tsr)
PUBLIC: Set the default JTA 1.1 synchronization objects registry to be used.void
setTransactionManager(jakarta.transaction.TransactionSynchronizationRegistry supplTsr)
PUBLIC: Set the synchronization objects registry used to control the JTA 1.1 transactions.-
Methods inherited from class org.eclipse.persistence.transaction.JTATransactionController
acquireTransactionManager, beginTransaction_impl, canBeginTransaction_impl, canCommitTransaction_impl, canIssueSQLToDatabase_impl, canMergeUnitOfWork_impl, canRollbackTransaction_impl, commitTransaction_impl, getDefaultTransactionManager, getIntStatus, getTransaction_impl, getTransactionManager, rollbackTransaction_impl, setDefaultTransactionManager, setTransactionManager, statusToString_impl
-
Methods inherited from class org.eclipse.persistence.transaction.AbstractTransactionController
addUnitOfWork, beginTransaction, bindToCurrentTransaction, clearSequencingListeners, commitTransaction, getActiveSequencingCallback, getActiveUnitOfWork, getExceptionHandler, getListenerFactory, getSession, getTransaction, getTransactionKey, getTransactionStatus, getUnitsOfWork, hasActiveUnitOfWork, initializeSequencingListeners, isSequencingCallbackRequired, jndiLookup, logTxStateTrace, logTxTrace, lookupActiveUnitOfWork, lookupActiveUnitOfWork, markTransactionForRollback, noTransactionOrRolledBackOrCommited, numSessionsRequiringSequencingCallback, registerSynchronizationListener, removeSequencingListener, removeUnitOfWork, rollbackTransaction, setExceptionHandler, setListenerFactory, setSession, setUnitsOfWork
-
-
-
-
Field Detail
-
JNDI_TRANSACTION_SYNCHRONIZATION_REGISTRY
public static final String JNDI_TRANSACTION_SYNCHRONIZATION_REGISTRY
Common JNDI name ofTransactionSynchronizationRegistry
instance.- See Also:
- Constant Field Values
-
defaultTsr
protected static jakarta.transaction.TransactionSynchronizationRegistry defaultTsr
AllowsTransactionSynchronizationRegistry
to be set statically.
-
tsr
protected jakarta.transaction.TransactionSynchronizationRegistry tsr
Primary point of integration with JTA 1.1.
-
-
Constructor Detail
-
JTA11TransactionController
public JTA11TransactionController()
PUBLIC: Return a new controller for use with acquired JTA 1.1 compliantTransactionSynchronizationRegistry
.
-
JTA11TransactionController
public JTA11TransactionController(jakarta.transaction.TransactionSynchronizationRegistry supplTsr, jakarta.transaction.TransactionManager supplTm)
PUBLIC: Return a new controller for use with supplied JTA 1.1 compliant synchronization objects registry.- Parameters:
supplTm
- supplied JTA 1.0 compliant transaction manager.supplTsr
- supplied JTA 1.1 compliant synchronization objects registry
-
-
Method Detail
-
getDefaultTransactionSynchronizationRegistry
public static jakarta.transaction.TransactionSynchronizationRegistry getDefaultTransactionSynchronizationRegistry()
PUBLIC: Get the default JTA 1.1 synchronization objects registry being used.- Returns:
- synchronization objects registry being used or
null
if no default value was set yet.
-
setDefaultTransactionSynchronizationRegistry
public static void setDefaultTransactionSynchronizationRegistry(jakarta.transaction.TransactionSynchronizationRegistry tsr)
PUBLIC: Set the default JTA 1.1 synchronization objects registry to be used. This can be called directly before login to configure JTA integration manually, or using Spring injection.- Parameters:
tsr
- synchronization objects registry to set
-
acquireTransactionSynchronizationRegistry
protected jakarta.transaction.TransactionSynchronizationRegistry acquireTransactionSynchronizationRegistry()
INTERNAL: Obtain and return the JTA 1.1TransactionSynchronizationRegistry
on this platform. This method can be can be overridden by subclasses to obtain theTransactionSynchronizationRegistry
by whatever means is appropriate to the server. This method is invoked by the constructor to initialize the synchronization objects registry at instance-creation time. Alternatively the synchronization objects registry can be set directly on the controller instance using the setTransactionManager() method after the instance has been created.- Returns:
- the
TransactionSynchronizationRegistry
for the transaction system ornull
if no default value was found
-
getTransactionSynchronizationRegistry
public jakarta.transaction.TransactionSynchronizationRegistry getTransactionSynchronizationRegistry()
PUBLIC: Return the synchronization objects registry used to control the JTA 1.1 transactions.- Returns:
- the JTA 1.1
TransactionSynchronizationRegistry
that is used to obtain transaction state information and control the active transaction
-
setTransactionManager
public void setTransactionManager(jakarta.transaction.TransactionSynchronizationRegistry supplTsr)
PUBLIC: Set the synchronization objects registry used to control the JTA 1.1 transactions.- Parameters:
supplTsr
- a valid JTA 1.1TransactionSynchronizationRegistry
that can be accessed by this controller to obtain transaction state information and control the active transaction
-
registerSynchronization_impl
protected void registerSynchronization_impl(AbstractSynchronizationListener listener, Object txn) throws Exception
INTERNAL: Register the specified synchronization listener with the given active transaction.- Overrides:
registerSynchronization_impl
in classJTATransactionController
- Parameters:
listener
- the synchronization listener created for this transactiontxn
- the active transaction for which notification is being requested- Throws:
Exception
-
getTransactionKey_impl
protected Object getTransactionKey_impl(Object transaction) throws Exception
INTERNAL: Return a key for the specified external transaction object. The key is just something that can be inserted into a hash table (must supporthashCode()
andequals()
methods).- Overrides:
getTransactionKey_impl
in classJTATransactionController
- Parameters:
transaction
- The transaction to which the returned key applies (may be null)- Returns:
- an opaque object to represent the transaction bound to the current thread at the time this method
is called, or
null
if no transaction specified - Throws:
Exception
-
getTransactionStatus_impl
protected Object getTransactionStatus_impl() throws Exception
INTERNAL: Return the transaction status as an object. We will pass aroundInteger
s that wrap theint
JTA status values.- Overrides:
getTransactionStatus_impl
in classJTATransactionController
- Returns:
- the status of the transaction bound to the current thread at the time this method is called
- Throws:
Exception
-
markTransactionForRollback_impl
protected void markTransactionForRollback_impl() throws Exception
INTERNAL: Mark the external transaction for rollback.- Overrides:
markTransactionForRollback_impl
in classJTATransactionController
- Throws:
Exception
-
isRolledBack_impl
public boolean isRolledBack_impl(Object status)
INTERNAL: Check whether the transaction is rolled back.- Overrides:
isRolledBack_impl
in classJTATransactionController
- Parameters:
status
-true
if the transaction is rolled back orfalse
otherwise
-
-