diff --git a/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java b/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java index a4bea6b17a9..2c7c080859b 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java +++ b/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java @@ -19,8 +19,6 @@ package org.springframework.transaction.jta; import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.List; import java.util.Properties; @@ -54,8 +52,6 @@ import org.springframework.transaction.support.AbstractPlatformTransactionManage import org.springframework.transaction.support.DefaultTransactionStatus; import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.util.Assert; -import org.springframework.util.ClassUtils; -import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; /** @@ -143,10 +139,6 @@ public class JtaTransactionManager extends AbstractPlatformTransactionManager "java:comp/TransactionSynchronizationRegistry"; - // JTA 2.1 UserTransaction#setReadOnly(boolean) method available? - private static final @Nullable Method setReadOnlyMethod = - ClassUtils.getMethodIfAvailable(UserTransaction.class, "setReadOnly", boolean.class); - private transient JndiTemplate jndiTemplate = new JndiTemplate(); private transient @Nullable UserTransaction userTransaction; @@ -866,12 +858,6 @@ public class JtaTransactionManager extends AbstractPlatformTransactionManager applyIsolationLevel(txObject, definition.getIsolationLevel()); int timeout = determineTimeout(definition); applyTimeout(txObject, timeout); - - if (definition.isReadOnly()) { - setReadOnlyIfPossible(txObject.getUserTransaction(), true); - txObject.resetReadOnly = true; - } - txObject.getUserTransaction().begin(); } @@ -918,21 +904,6 @@ public class JtaTransactionManager extends AbstractPlatformTransactionManager } } - private void setReadOnlyIfPossible(UserTransaction ut, boolean readOnly) throws SystemException { - if (setReadOnlyMethod != null) { - try { - setReadOnlyMethod.invoke(ut, readOnly); - } - catch (Exception ex) { - if (ex instanceof InvocationTargetException ute && - ute.getTargetException() instanceof SystemException se) { - throw se; - } - ReflectionUtils.handleReflectionException(ex); - } - } - } - @Override protected Object doSuspend(Object transaction) { @@ -1190,14 +1161,6 @@ public class JtaTransactionManager extends AbstractPlatformTransactionManager @Override protected void doCleanupAfterCompletion(Object transaction) { JtaTransactionObject txObject = (JtaTransactionObject) transaction; - if (txObject.resetReadOnly) { - try { - setReadOnlyIfPossible(txObject.getUserTransaction(), false); - } - catch (SystemException ex) { - logger.debug("Failed to reset read-only flag after after JTA completion", ex); - } - } if (txObject.resetTransactionTimeout) { try { txObject.getUserTransaction().setTransactionTimeout(0); diff --git a/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionObject.java b/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionObject.java index 531b9ff98e5..d3cb2afeac1 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionObject.java +++ b/spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionObject.java @@ -41,8 +41,6 @@ public class JtaTransactionObject implements SmartTransactionObject { boolean resetTransactionTimeout = false; - boolean resetReadOnly = false; - /** * Create a new JtaTransactionObject for the given JTA UserTransaction.