|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.springframework.transaction.support.AbstractPlatformTransactionManager
org.springframework.transaction.jta.JtaTransactionManager
org.springframework.transaction.jta.WebLogicJtaTransactionManager
public class WebLogicJtaTransactionManager
Special JtaTransactionManager variant for BEA WebLogic (7.0, 8.1 and higher).
Supports the full power of Spring's transaction definitions on WebLogic's
transaction coordinator, beyond standard JTA: transaction names,
per-transaction isolation levels, and proper resuming of transactions in all cases.
Uses WebLogic's special begin(name) method to start a JTA transaction,
in order to make Spring-driven transactions visible in WebLogic's transaction
monitor. In case of Spring's declarative transactions, the exposed name will
(by default) be the fully-qualified class name + "." + method name.
Supports a per-transaction isolation level through WebLogic's corresponding JTA transaction property "ISOLATION LEVEL". This will apply the specified isolation level (e.g. ISOLATION_SERIALIZABLE) to all JDBC Connections that participate in the given transaction.
Invokes WebLogic's special forceResume method if standard JTA resume
failed, to also resume if the target transaction was marked rollback-only.
If you're not relying on this feature of transaction suspension in the first
place, Spring's standard JtaTransactionManager will behave properly too.
Automatically detects WebLogic Server 7.0 or 8.1+ and adapts accordingly. Usage on a WebLogic client is also supported, although with restricted functionality: transaction names cannot be applied there.
By default, the JTA UserTransaction and TransactionManager handles are
fetched directly from WebLogic's TransactionHelper (on 8.1+)
or TxHelper (on 7.0). This can be overridden by specifying
"userTransaction"/"userTransactionName" and "transactionManager"/"transactionManagerName",
passing in existing handles or specifying corresponding JNDI locations to look up.
TransactionDefinition.getName(),
TransactionDefinition.getIsolationLevel(),
weblogic.transaction.UserTransaction#begin(String),
weblogic.transaction.Transaction#setProperty,
weblogic.transaction.TransactionManager#forceResume,
weblogic.transaction.TransactionHelper,
weblogic.transaction.TxHelper,
Serialized Form| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager |
|---|
AbstractPlatformTransactionManager.SuspendedResourcesHolder |
| Field Summary |
|---|
| Fields inherited from class org.springframework.transaction.jta.JtaTransactionManager |
|---|
DEFAULT_TRANSACTION_SYNCHRONIZATION_REGISTRY_NAME, DEFAULT_USER_TRANSACTION_NAME, FALLBACK_TRANSACTION_MANAGER_NAMES |
| Fields inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager |
|---|
logger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION |
| Constructor Summary | |
|---|---|
WebLogicJtaTransactionManager()
|
|
| Method Summary | |
|---|---|
void |
afterPropertiesSet()
Initialize the UserTransaction as well as the TransactionManager handle. |
Transaction |
createTransaction(String name,
int timeout)
Create an active Transaction object based on the given name and timeout. |
protected void |
doJtaBegin(JtaTransactionObject txObject,
TransactionDefinition definition)
Perform a JTA begin on the JTA UserTransaction or TransactionManager. |
protected void |
doJtaResume(JtaTransactionObject txObject,
Object suspendedTransaction)
Perform a JTA resume on the JTA TransactionManager. |
protected TransactionManager |
retrieveTransactionManager()
Allows subclasses to retrieve the JTA TransactionManager in a vendor-specific manner. |
protected UserTransaction |
retrieveUserTransaction()
Allows subclasses to retrieve the JTA UserTransaction in a vendor-specific manner. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public WebLogicJtaTransactionManager()
| Method Detail |
|---|
public void afterPropertiesSet()
throws TransactionSystemException
JtaTransactionManager
afterPropertiesSet in interface InitializingBeanafterPropertiesSet in class JtaTransactionManagerTransactionSystemExceptionJtaTransactionManager.initUserTransactionAndTransactionManager()
protected UserTransaction retrieveUserTransaction()
throws TransactionSystemException
JtaTransactionManagerThe default implementation simply returns null.
retrieveUserTransaction in class JtaTransactionManagernull if none found
TransactionSystemException - in case of errorsJtaTransactionManager.setUserTransaction(javax.transaction.UserTransaction),
JtaTransactionManager.setUserTransactionName(java.lang.String)
protected TransactionManager retrieveTransactionManager()
throws TransactionSystemException
JtaTransactionManagerThe default implementation simply returns null.
retrieveTransactionManager in class JtaTransactionManagernull if none found
TransactionSystemException - in case of errorsJtaTransactionManager.setTransactionManager(javax.transaction.TransactionManager),
JtaTransactionManager.setTransactionManagerName(java.lang.String)
protected void doJtaBegin(JtaTransactionObject txObject,
TransactionDefinition definition)
throws NotSupportedException,
SystemException
JtaTransactionManagerThis implementation only supports standard JTA functionality: that is, no per-transaction isolation levels and no transaction names. Can be overridden in subclasses, for specific JTA implementations.
Calls applyIsolationLevel and applyTimeout
before invoking the UserTransaction's begin method.
doJtaBegin in class JtaTransactionManagertxObject - the JtaTransactionObject containing the UserTransactiondefinition - TransactionDefinition instance, describing propagation
behavior, isolation level, read-only flag, timeout, and transaction name
NotSupportedException - if thrown by JTA methods
SystemException - if thrown by JTA methodsJtaTransactionManager.getUserTransaction(),
JtaTransactionManager.getTransactionManager(),
JtaTransactionManager.applyIsolationLevel(org.springframework.transaction.jta.JtaTransactionObject, int),
JtaTransactionManager.applyTimeout(org.springframework.transaction.jta.JtaTransactionObject, int),
JtaTransactionObject.getUserTransaction(),
UserTransaction.setTransactionTimeout(int),
UserTransaction.begin()
protected void doJtaResume(JtaTransactionObject txObject,
Object suspendedTransaction)
throws InvalidTransactionException,
SystemException
JtaTransactionManagerCan be overridden in subclasses, for specific JTA implementations.
doJtaResume in class JtaTransactionManagertxObject - the JtaTransactionObject containing the UserTransactionsuspendedTransaction - the suspended JTA Transaction object
InvalidTransactionException - if thrown by JTA methods
SystemException - if thrown by JTA methodsJtaTransactionManager.getTransactionManager(),
TransactionManager.resume(javax.transaction.Transaction)
public Transaction createTransaction(String name,
int timeout)
throws NotSupportedException,
SystemException
TransactionFactory
createTransaction in interface TransactionFactorycreateTransaction in class JtaTransactionManagername - the transaction name (may be null)timeout - the transaction timeout (may be -1 for the default timeout)
null)
NotSupportedException - if the transaction manager does not support
a transaction of the specified type
SystemException - if the transaction managed failed to create the
transaction
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||