org.apache.openejb.core.transaction
Class TxRequiresNew
java.lang.Object
org.apache.openejb.core.transaction.JtaTransactionPolicy
org.apache.openejb.core.transaction.TxRequiresNew
- All Implemented Interfaces:
- TransactionPolicy
public class TxRequiresNew
- extends JtaTransactionPolicy
17.6.2.4 RequiresNew
The Container must invoke an enterprise Bean method whose transaction
attribute is set to RequiresNew with a new transaction context.
If the client invokes the enterprise Bean's method while the client is not
associated with a transaction context, the container automatically starts a
new transaction before delegating a method call to the enterprise Bean
business method. The Container automatically enlists all the resource
managers accessed by the business method with the transaction. If the
business method invokes other enterprise beans, the Container passes the
transaction context with the invocation. The Container attempts to commit the
transaction when the business method has completed. The container performs
the commit protocol before the method result is sent to the client.
If a client calls with a transaction context, the container suspends the
association of the transaction context with the current thread before
starting the new transaction and invoking the business method. The container
resumes the suspended transaction association after the business method and
the new transaction have been completed.
Method Summary |
void |
commit()
Commits or rolls back this TransactionPolicy. |
Transaction |
getCurrentTransaction()
|
boolean |
isClientTransaction()
Is this policy running in an inhreited transaction? Some
TransactionTypes, such as Required or Supported, use the caller's
transaction instead of starting a new transaction. |
boolean |
isNewTransaction()
Is this a new transaction and not an inhreited transaction or no transaction? Some
TransactionTypes, such as Required or Supported, use the caller's
transaction instead of starting a new transaction. |
Methods inherited from class org.apache.openejb.core.transaction.JtaTransactionPolicy |
beginTransaction, completeTransaction, enlistResource, fireNonTransactionalCompletion, getResource, getTransaction, getTransactionType, isRollbackOnly, isTransactionActive, putResource, registerSynchronization, removeResource, resumeTransaction, rollbackTransaction, setRollbackOnly, setRollbackOnly, suspendTransaction, toString |
TxRequiresNew
public TxRequiresNew(TransactionManager transactionManager)
throws SystemException
- Throws:
SystemException
isNewTransaction
public boolean isNewTransaction()
- Description copied from interface:
TransactionPolicy
- Is this a new transaction and not an inhreited transaction or no transaction? Some
TransactionTypes, such as Required or Supported, use the caller's
transaction instead of starting a new transaction. If there is no active
transaction (e.g., TransactionType is NotSupported), this method will
- Returns:
- true if this not an inherited transaction
isClientTransaction
public boolean isClientTransaction()
- Description copied from interface:
TransactionPolicy
- Is this policy running in an inhreited transaction? Some
TransactionTypes, such as Required or Supported, use the caller's
transaction instead of starting a new transaction. If there is no active
transaction (e.g., TransactionType is NotSupported), this method will
return false.
- Returns:
- true if this is an inherited transaction
getCurrentTransaction
public Transaction getCurrentTransaction()
- Specified by:
getCurrentTransaction
in class JtaTransactionPolicy
commit
public void commit()
throws SystemException,
ApplicationException
- Description copied from interface:
TransactionPolicy
- Commits or rolls back this TransactionPolicy. If there the actual
transaction is completed or there is no actual transaction, the
registered TransactionSynchronization are called. Otherwise, the
registered TransactionSynchronization are called when the actual
transaction is completed.
- Throws:
SystemException
- if an unrecoverable exception is encountered
ApplicationException
- if recoverable exception is encountered
Copyright © 1999-2013 The Apache OpenEJB development community. All Rights Reserved.