Package org.datanucleus.transaction.jta
Class JTAJCATransactionImpl
- java.lang.Object
-
- org.datanucleus.transaction.TransactionImpl
-
- org.datanucleus.transaction.jta.JTAJCATransactionImpl
-
- All Implemented Interfaces:
javax.transaction.Synchronization
,Transaction
public class JTAJCATransactionImpl extends TransactionImpl implements javax.transaction.Synchronization
A transaction that is synchronised with a Java Transaction Service (JTA) transaction with JCA. It is only used when using the JDO API within a JavaEE environment using the JCA adapter (i.e not for JPA).
-
-
Field Summary
Fields Modifier and Type Field Description private javax.transaction.TransactionManager
jtaTM
JTA TransactionManager.private javax.transaction.Transaction
jtaTx
JTA transaction we currently are synchronized with.private boolean
markedForRollback
-
Fields inherited from class org.datanucleus.transaction.TransactionImpl
active, closed, committing, ec, rollbackOnly, serializeRead, txnMgr
-
Fields inherited from interface org.datanucleus.transaction.Transaction
TRANSACTION_ISOLATION_OPTION
-
-
Constructor Summary
Constructors Constructor Description JTAJCATransactionImpl(ExecutionContext ec, PropertyStore properties)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterCompletion(int status)
Called by the transaction manager after the transaction is committed or rolled back.void
beforeCompletion()
Called by the transaction manager prior to the start of the two-phase transaction commit process.boolean
getIsActive()
Similar to "isActive" except that it just returns the "active" flag whereas the isActive() method can also embody rejoining to underlying transactions.boolean
isActive()
Accessor for whether the transaction is active.private void
joinTransaction()
Synchronise our active state with that of the JTA transaction, if it exists.-
Methods inherited from class org.datanucleus.transaction.TransactionImpl
addTransactionEventListener, begin, bindTransactionEventListener, close, commit, end, flush, getBeginTime, getNontransactionalRead, getNontransactionalWrite, getNontransactionalWriteAutoCommit, getOptimistic, getOptions, getRestoreValues, getRetainValues, getRollbackOnly, getSerializeRead, getSynchronization, internalBegin, internalCommit, internalPostCommit, internalPreCommit, internalPreRollback, internalRollback, isCommitting, preFlush, releaseSavepoint, removeTransactionEventListener, rollback, rollbackToSavepoint, setNontransactionalRead, setNontransactionalWrite, setNontransactionalWriteAutoCommit, setOptimistic, setOption, setOption, setOption, setOption, setProperties, setRestoreValues, setRetainValues, setRollbackOnly, setSavepoint, setSerializeRead, setSynchronization
-
-
-
-
Field Detail
-
jtaTM
private javax.transaction.TransactionManager jtaTM
JTA TransactionManager.
-
jtaTx
private javax.transaction.Transaction jtaTx
JTA transaction we currently are synchronized with. Null when there is no JTA transaction active or not yet detected.
-
markedForRollback
private boolean markedForRollback
-
-
Constructor Detail
-
JTAJCATransactionImpl
public JTAJCATransactionImpl(ExecutionContext ec, PropertyStore properties)
Constructor.- Parameters:
ec
- ExecutionContextproperties
- Properties to use with the transaction
-
-
Method Detail
-
getIsActive
public boolean getIsActive()
Description copied from class:TransactionImpl
Similar to "isActive" except that it just returns the "active" flag whereas the isActive() method can also embody rejoining to underlying transactions.- Specified by:
getIsActive
in interfaceTransaction
- Overrides:
getIsActive
in classTransactionImpl
- Returns:
- The "active" flag
-
isActive
public boolean isActive()
Accessor for whether the transaction is active.- Specified by:
isActive
in interfaceTransaction
- Overrides:
isActive
in classTransactionImpl
- Returns:
- Whether the transaction is active.
-
joinTransaction
private void joinTransaction()
Synchronise our active state with that of the JTA transaction, if it exists. Look for an active JTA transaction. If there is one, begin() ourselves and register synchronisation. We must poll because there is no way of getting notified of a newly begun transaction.
-
beforeCompletion
public void beforeCompletion()
Called by the transaction manager prior to the start of the two-phase transaction commit process.- Specified by:
beforeCompletion
in interfacejavax.transaction.Synchronization
-
afterCompletion
public void afterCompletion(int status)
Called by the transaction manager after the transaction is committed or rolled back. Must be synchronised because some callers expect to be owner of this object's monitor (internalPostCommit() calls closeSQLConnection() which calls notifyAll()).- Specified by:
afterCompletion
in interfacejavax.transaction.Synchronization
- Parameters:
status
- The status
-
-