javax.transaction.TransactionManager
ServerTransactionManager
, TransactionManager
public interface ClientTransactionManager
weblogic.transaction.TransactionManager
so that
it can be used in the thin-client.Modifier and Type | Method | Description |
---|---|---|
void |
forceResume(javax.transaction.Transaction suspendedTx) |
If the transaction is active,
resume automatically
enlists statically registered resources and associates the
transaction with the thread. |
javax.transaction.Transaction |
forceSuspend() |
suspend dissociates the transaction from the thread
delists enlisted resources and marks the transaction for rollback
in the event of any failures (for example, while delisting
statically registered resources). |
void forceResume(javax.transaction.Transaction suspendedTx)
resume
automatically
enlists statically registered resources and associates the
transaction with the thread. It also checks to see if there's
another transaction associated with the thread.
forceResume
simply associates a transaction with a
thread without further ado. It is used when you want to suspend a
transaction in a thread and subsequently resume it without
checking the state. This call is typically used by XA resource
providers. Caution must be exercised when using this method
because it bypasses all the sanity checks otherwise performed by
resume.
The following example illustrates its use. Say, you want to make
an RMI or JDBC call (or simply a call to a local object) without
propagating the transaction, while ensuring that code after the
RMI call sees the transaction in its original state. The
following code illustrates the use of
forceResume
:
import weblogic.transaction.TransactionManager; import weblogic.transaction.Transaction; TransactionManager tm = TxHelper.getTransaction(); Transaction saveTx = null; try { saveTx = tm.forceSuspend(); .. make non-transactional call ... } finally { tm.forceResume(saveTx); }
Weblogic rmi supports a marker interface called "NonTransactionRemote" and an rmi compiler option "-nontransactional". For those remote interfaces extending this interface (or by using the rmic command-line option) the complier inserts this boiler-plate code in the RMI stub.
weblogic.rmi.extensions#NonTransactionalRemote
javax.transaction.Transaction forceSuspend()
suspend
dissociates the transaction from the thread
delists enlisted resources and marks the transaction for rollback
in the event of any failures (for example, while delisting
statically registered resources). forceSuspend
merely dissociates the transaction from the thread; it doesn't
delist resources, nor does it throw any exceptions.