EclipseLink 1.2.0, build 'v20091016-r5565' API Reference

org.eclipse.persistence.transaction
Class JTATransactionController

java.lang.Object
  extended by org.eclipse.persistence.transaction.AbstractTransactionController
      extended by org.eclipse.persistence.transaction.JTATransactionController
All Implemented Interfaces:
ExternalTransactionController
Direct Known Subclasses:
JBossTransactionController, JotmTransactionController, Oc4jTransactionController, SunAS9TransactionController, WebLogicTransactionController, WebSphereTransactionController

public class JTATransactionController
extends AbstractTransactionController

Purpose: TransactionController implementation for JTA 1.0

Description: Implements the required behavior for controlling JTA 1.0 transactions. Specific JTA implementations may need to extend this class when special controller behavior is necessary.

The JTA TransactionManager 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 defining acquireTransactionManager() to return the manager for the server, or by using this class and explicitly calling the setTransactionManager() method on it after the fact. e.g. TransactionManager mgr = controller.jndiLookup("java:comp/TransactionManager"); controller.setTransactionManager(mgr);

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.

See Also:
JTASynchronizationListener, AbstractTransactionController

Field Summary
protected static javax.transaction.TransactionManager defaultTransactionManager
           
protected  javax.transaction.TransactionManager transactionManager
           
 
Fields inherited from class org.eclipse.persistence.transaction.AbstractTransactionController
activeUnitOfWorkThreadLocal, currentlyProcessedListeners, listenerFactory, numSessionsRequiringSequencingCallback, sequencingListeners, session, unitsOfWork
 
Constructor Summary
JTATransactionController()
          PUBLIC: Return a new controller for use with a JTA 1.0 compliant TransactionManager.
JTATransactionController(javax.transaction.TransactionManager transactionManager)
          PUBLIC: Return a new controller for use with a JTA 1.0 compliant TransactionManager.
 
Method Summary
protected  javax.transaction.TransactionManager acquireTransactionManager()
          INTERNAL: Obtain and return the JTA TransactionManager on this platform.
protected  void beginTransaction_impl()
          INTERNAL: Begin an external transaction.
protected  boolean canBeginTransaction_impl(java.lang.Object status)
          INTERNAL: Return true if the status indicates that a transaction can be started.
protected  boolean canCommitTransaction_impl(java.lang.Object status)
          INTERNAL: Return true if the status indicates that a transaction can be committed.
protected  boolean canIssueSQLToDatabase_impl(java.lang.Object status)
          INTERNAL: Return true if the status indicates that the SQL should be issued to the db.
protected  boolean canMergeUnitOfWork_impl(java.lang.Object status)
          INTERNAL: Return true if the status indicates that the unit of work should be merged into the shared cache.
protected  boolean canRollbackTransaction_impl(java.lang.Object status)
          INTERNAL: Return true if the status indicates that a transaction can be rolled back.
protected  void commitTransaction_impl()
          INTERNAL: Commit the external transaction.
static javax.transaction.TransactionManager getDefaultTransactionManager()
           
protected  int getIntStatus(java.lang.Object status)
          INTERNAL: Convenience method to return the int value of the transaction status.
protected  java.lang.Object getTransaction_impl()
          INTERNAL: Return the active external transaction, or null if none is currently active for this thread.
protected  java.lang.Object getTransactionKey_impl(java.lang.Object transaction)
          INTERNAL: Return a key for the specified external transaction object.
 javax.transaction.TransactionManager getTransactionManager()
          PUBLIC: Return the transaction manager used to control the JTA transactions.
protected  java.lang.Object getTransactionStatus_impl()
          INTERNAL: Return the transaction status as an object.
 boolean isRolledBack_impl(java.lang.Object status)
          INTERNAL: Return true if the transaction is rolled back.
protected  void markTransactionForRollback_impl()
          INTERNAL: Mark the external transaction for rollback.
protected  void registerSynchronization_impl(AbstractSynchronizationListener listener, java.lang.Object txn)
          INTERNAL: Register the specified synchronization listener with the given active transaction.
protected  void rollbackTransaction_impl()
          INTERNAL: Roll back the external transaction.
static void setDefaultTransactionManager(javax.transaction.TransactionManager defaultTransactionManager)
          PUBLIC: Set the JTA transaction manager to be used.
 void setTransactionManager(javax.transaction.TransactionManager mgr)
          PUBLIC: Set the transaction manager used to control the JTA transactions.
protected  java.lang.String statusToString_impl(java.lang.Object status)
          INTERNAL: Convert the status to a string for tracing.
 
Methods inherited from class org.eclipse.persistence.transaction.AbstractTransactionController
addUnitOfWork, beginTransaction, bindToCurrentTransaction, clearSequencingListeners, commitTransaction, getActiveSequencingCallback, getActiveUnitOfWork, getListenerFactory, getSession, getTransaction, getTransactionKey, getTransactionStatus, getUnitsOfWork, hasActiveUnitOfWork, initializeSequencingListeners, isSequencingCallbackRequired, jndiLookup, logTxStateTrace, logTxTrace, lookupActiveUnitOfWork, lookupActiveUnitOfWork, markTransactionForRollback, noTransactionOrRolledBackOrCommited, numSessionsRequiringSequencingCallback, registerSynchronizationListener, removeSequencingListener, removeUnitOfWork, rollbackTransaction, setListenerFactory, setSession, setUnitsOfWork
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

defaultTransactionManager

protected static javax.transaction.TransactionManager defaultTransactionManager

transactionManager

protected javax.transaction.TransactionManager transactionManager
Constructor Detail

JTATransactionController

public JTATransactionController()
PUBLIC: Return a new controller for use with a JTA 1.0 compliant TransactionManager.


JTATransactionController

public JTATransactionController(javax.transaction.TransactionManager transactionManager)
PUBLIC: Return a new controller for use with a JTA 1.0 compliant TransactionManager.

Method Detail

registerSynchronization_impl

protected void registerSynchronization_impl(AbstractSynchronizationListener listener,
                                            java.lang.Object txn)
                                     throws java.lang.Exception
INTERNAL: Register the specified synchronization listener with the given active transaction.

Specified by:
registerSynchronization_impl in class AbstractTransactionController
Parameters:
listener - The synchronization listener created for this transaction
txn - The active transaction for which notification is being requested
Throws:
java.lang.Exception

getTransaction_impl

protected java.lang.Object getTransaction_impl()
                                        throws java.lang.Exception
INTERNAL: Return the active external transaction, or null if none is currently active for this thread.

Specified by:
getTransaction_impl in class AbstractTransactionController
Returns:
The active transaction object or id, or null if no transaction is active
Throws:
java.lang.Exception

getTransactionKey_impl

protected java.lang.Object getTransactionKey_impl(java.lang.Object transaction)
                                           throws java.lang.Exception
INTERNAL: Return a key for the specified external transaction object. The key is just something that can be inserted into a hashtable (must support hashCode() and equals() methods).

Specified by:
getTransactionKey_impl in class AbstractTransactionController
Parameters:
transaction - The transaction to which the returned key applies (may be null)
Returns:
A key for the passed in transaction, or null if no transaction specified
Throws:
java.lang.Exception

getTransactionStatus_impl

protected java.lang.Object getTransactionStatus_impl()
                                              throws java.lang.Exception
INTERNAL: Return the transaction status as an object. We will pass around Integers that wrap the int JTA status values.

Specified by:
getTransactionStatus_impl in class AbstractTransactionController
Returns:
The current transaction status
Throws:
java.lang.Exception

beginTransaction_impl

protected void beginTransaction_impl()
                              throws java.lang.Exception
INTERNAL: Begin an external transaction.

Specified by:
beginTransaction_impl in class AbstractTransactionController
Throws:
java.lang.Exception

commitTransaction_impl

protected void commitTransaction_impl()
                               throws java.lang.Exception
INTERNAL: Commit the external transaction.

Specified by:
commitTransaction_impl in class AbstractTransactionController
Throws:
java.lang.Exception

rollbackTransaction_impl

protected void rollbackTransaction_impl()
                                 throws java.lang.Exception
INTERNAL: Roll back the external transaction.

Specified by:
rollbackTransaction_impl in class AbstractTransactionController
Throws:
java.lang.Exception

markTransactionForRollback_impl

protected void markTransactionForRollback_impl()
                                        throws java.lang.Exception
INTERNAL: Mark the external transaction for rollback.

Specified by:
markTransactionForRollback_impl in class AbstractTransactionController
Throws:
java.lang.Exception

canBeginTransaction_impl

protected boolean canBeginTransaction_impl(java.lang.Object status)
INTERNAL: Return true if the status indicates that a transaction can be started. This would normally mean that no transaction is currently active.

Specified by:
canBeginTransaction_impl in class AbstractTransactionController
Parameters:
status - The current transaction status
Returns:
true if the current state allows for a transaction to be started

canCommitTransaction_impl

protected boolean canCommitTransaction_impl(java.lang.Object status)
INTERNAL: Return true if the status indicates that a transaction can be committed. This would normally mean that a transaction is currently active.

Specified by:
canCommitTransaction_impl in class AbstractTransactionController
Parameters:
status - The current transaction status
Returns:
true if the current state allows for a transaction to be committed

canRollbackTransaction_impl

protected boolean canRollbackTransaction_impl(java.lang.Object status)
INTERNAL: Return true if the status indicates that a transaction can be rolled back. This would normally mean that a transaction is currently active.

Specified by:
canRollbackTransaction_impl in class AbstractTransactionController
Parameters:
status - The current transaction status
Returns:
true if the current state allows for a transaction to be rolled back

canIssueSQLToDatabase_impl

protected boolean canIssueSQLToDatabase_impl(java.lang.Object status)
INTERNAL: Return true if the status indicates that the SQL should be issued to the db. This would normally mean that a transaction was active.

Specified by:
canIssueSQLToDatabase_impl in class AbstractTransactionController
Parameters:
status - The current transaction status
Returns:
true if the current state allows for the SQL to be sent to the database

canMergeUnitOfWork_impl

protected boolean canMergeUnitOfWork_impl(java.lang.Object status)
INTERNAL: Return true if the status indicates that the unit of work should be merged into the shared cache. This would normally mean that the transaction was committed successfully.

Specified by:
canMergeUnitOfWork_impl in class AbstractTransactionController
Parameters:
status - The current transaction status
Returns:
true if the current state dictates that the unit of work should be merged

isRolledBack_impl

public boolean isRolledBack_impl(java.lang.Object status)
INTERNAL: Return true if the transaction is rolled back.

Specified by:
isRolledBack_impl in class AbstractTransactionController

acquireTransactionManager

protected javax.transaction.TransactionManager acquireTransactionManager()
                                                                  throws java.lang.Exception
INTERNAL: Obtain and return the JTA TransactionManager on this platform. By default try java:comp JNDI lookup. This method can be can be overridden by subclasses to obtain the transaction manager by whatever means is appropriate to the server. This method is invoked by the constructor to initialize the transaction manager at instance-creation time. Alternatively the transaction manager can be set directly on the controller instance using the setTransactionManager() method after the instance has been created.

Returns:
The TransactionManager for the transaction system
Throws:
java.lang.Exception

getIntStatus

protected int getIntStatus(java.lang.Object status)
INTERNAL: Convenience method to return the int value of the transaction status. Assumes that the status object is an Integer.


getTransactionManager

public javax.transaction.TransactionManager getTransactionManager()
PUBLIC: Return the transaction manager used to control the JTA transactions.

Returns:
The JTA TransactionManager that is used to obtain transaction state information and control the active transaction.

setTransactionManager

public void setTransactionManager(javax.transaction.TransactionManager mgr)
PUBLIC: Set the transaction manager used to control the JTA transactions.

Parameters:
mgr - A valid JTA TransactionManager that can be accessed by this controller to obtain transaction state information and control the active transaction.

statusToString_impl

protected java.lang.String statusToString_impl(java.lang.Object status)
Description copied from class: AbstractTransactionController
INTERNAL: Convert the status to a string for tracing.

Specified by:
statusToString_impl in class AbstractTransactionController

getDefaultTransactionManager

public static javax.transaction.TransactionManager getDefaultTransactionManager()

setDefaultTransactionManager

public static void setDefaultTransactionManager(javax.transaction.TransactionManager defaultTransactionManager)
PUBLIC: Set the JTA transaction manager to be used. This can be called directly before login to configure JTA integration manually, or using Spring injection.


EclipseLink 1.2.0, build 'v20091016-r5565' API Reference