Refined javadoc for WebLogic/WebSphere transaction setup

Issue: SPR-10777
This commit is contained in:
Juergen Hoeller 2013-08-01 17:24:24 +02:00
parent d32a77a5f0
commit 9035a97e18
2 changed files with 16 additions and 8 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2012 the original author or authors. * Copyright 2002-2013 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -56,6 +56,11 @@ import org.springframework.transaction.TransactionSystemException;
* "transactionManager"/"transactionManagerName", passing in existing handles * "transactionManager"/"transactionManagerName", passing in existing handles
* or specifying corresponding JNDI locations to look up. * or specifying corresponding JNDI locations to look up.
* *
* <p><b>NOTE: This JtaTransactionManager is intended to refine specific transaction
* demarcation behavior on Spring's side. It will happily co-exist with independently
* configured WebLogic transaction strategies in your persistence provider, with no
* need to specifically connect those setups in any way.</b>
*
* @author Juergen Hoeller * @author Juergen Hoeller
* @since 1.1 * @since 1.1
* @see org.springframework.transaction.TransactionDefinition#getName * @see org.springframework.transaction.TransactionDefinition#getName
@ -136,11 +141,10 @@ public class WebLogicJtaTransactionManager extends JtaTransactionManager {
} }
} }
private void loadWebLogicTransactionHelper() throws TransactionSystemException { private void loadWebLogicTransactionHelper() throws TransactionSystemException {
if (this.transactionHelper == null) { if (this.transactionHelper == null) {
try { try {
Class transactionHelperClass = getClass().getClassLoader().loadClass(TRANSACTION_HELPER_CLASS_NAME); Class<?> transactionHelperClass = getClass().getClassLoader().loadClass(TRANSACTION_HELPER_CLASS_NAME);
Method getTransactionHelperMethod = transactionHelperClass.getMethod("getTransactionHelper"); Method getTransactionHelperMethod = transactionHelperClass.getMethod("getTransactionHelper");
this.transactionHelper = getTransactionHelperMethod.invoke(null); this.transactionHelper = getTransactionHelperMethod.invoke(null);
logger.debug("WebLogic TransactionHelper found"); logger.debug("WebLogic TransactionHelper found");
@ -159,7 +163,7 @@ public class WebLogicJtaTransactionManager extends JtaTransactionManager {
private void loadWebLogicTransactionClasses() throws TransactionSystemException { private void loadWebLogicTransactionClasses() throws TransactionSystemException {
try { try {
Class userTransactionClass = getClass().getClassLoader().loadClass(USER_TRANSACTION_CLASS_NAME); Class<?> userTransactionClass = getClass().getClassLoader().loadClass(USER_TRANSACTION_CLASS_NAME);
this.weblogicUserTransactionAvailable = userTransactionClass.isInstance(getUserTransaction()); this.weblogicUserTransactionAvailable = userTransactionClass.isInstance(getUserTransaction());
if (this.weblogicUserTransactionAvailable) { if (this.weblogicUserTransactionAvailable) {
this.beginWithNameMethod = userTransactionClass.getMethod("begin", String.class); this.beginWithNameMethod = userTransactionClass.getMethod("begin", String.class);
@ -171,13 +175,13 @@ public class WebLogicJtaTransactionManager extends JtaTransactionManager {
} }
// Obtain WebLogic ClientTransactionManager interface. // Obtain WebLogic ClientTransactionManager interface.
Class transactionManagerClass = Class<?> transactionManagerClass =
getClass().getClassLoader().loadClass(CLIENT_TRANSACTION_MANAGER_CLASS_NAME); getClass().getClassLoader().loadClass(CLIENT_TRANSACTION_MANAGER_CLASS_NAME);
logger.debug("WebLogic ClientTransactionManager found"); logger.debug("WebLogic ClientTransactionManager found");
this.weblogicTransactionManagerAvailable = transactionManagerClass.isInstance(getTransactionManager()); this.weblogicTransactionManagerAvailable = transactionManagerClass.isInstance(getTransactionManager());
if (this.weblogicTransactionManagerAvailable) { if (this.weblogicTransactionManagerAvailable) {
Class transactionClass = getClass().getClassLoader().loadClass(TRANSACTION_CLASS_NAME); Class<?> transactionClass = getClass().getClassLoader().loadClass(TRANSACTION_CLASS_NAME);
this.forceResumeMethod = transactionManagerClass.getMethod("forceResume", Transaction.class); this.forceResumeMethod = transactionManagerClass.getMethod("forceResume", Transaction.class);
this.setPropertyMethod = transactionClass.getMethod("setProperty", String.class, Serializable.class); this.setPropertyMethod = transactionClass.getMethod("setProperty", String.class, Serializable.class);
logger.debug("Support for WebLogic forceResume available"); logger.debug("Support for WebLogic forceResume available");
@ -296,7 +300,6 @@ public class WebLogicJtaTransactionManager extends JtaTransactionManager {
} }
} }
@Override @Override
public Transaction createTransaction(String name, int timeout) throws NotSupportedException, SystemException { public Transaction createTransaction(String name, int timeout) throws NotSupportedException, SystemException {
if (this.weblogicUserTransactionAvailable && name != null) { if (this.weblogicUserTransactionAvailable && name != null) {

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2012 the original author or authors. * Copyright 2002-2013 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -71,6 +71,11 @@ import org.springframework.util.ReflectionUtils;
* simply specify the actual location through this transaction manager's * simply specify the actual location through this transaction manager's
* "uowManagerName" bean property. * "uowManagerName" bean property.
* *
* <p><b>NOTE: This JtaTransactionManager is intended to refine specific transaction
* demarcation behavior on Spring's side. It will happily co-exist with independently
* configured WebSphere transaction strategies in your persistence provider, with no
* need to specifically connect those setups in any way.</b>
*
* @author Juergen Hoeller * @author Juergen Hoeller
* @since 2.5 * @since 2.5
* @see #setUowManager * @see #setUowManager