This is an automated email from the ASF dual-hosted git repository.

mridulpathak pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/trunk by this push:
     new a75698309d Improved: Upgrade geronimo-transaction to 4.0.0 and migrate 
from javax.transaction to jakarta.transaction (OFBIZ-13723)
a75698309d is described below

commit a75698309db26ba8da7ad32ceb2fd12d34c8e577
Author: Mridul Pathak <[email protected]>
AuthorDate: Fri Oct 23 16:55:13 2026 +0530

    Improved: Upgrade geronimo-transaction to 4.0.0 and migrate from 
javax.transaction to jakarta.transaction (OFBIZ-13723)
    
    - Upgrade geronimo-transaction from 3.1.5 to 4.0.0, which implements 
Jakarta Transactions 2.0, and depend on jakarta.transaction-api 2.0.1 instead 
of javax.transaction-api 1.3.
    - Replace commons-dbcp2 with tomcat-dbcp, the same DBCP 2.14.0 code 
repackaged by Tomcat for jakarta.transaction, since commons-dbcp2 only supports 
javax.transaction (DBCP-589); its version follows our Tomcat version.
    - Move all javax.transaction imports to jakarta.transaction; 
javax.transaction.xa stays, being part of the JDK.
    - Reject javax.transaction imports, except javax.transaction.xa, with 
Checkstyle, as Axis2 1.8 still brings the javax.transaction API on the 
classpath.
    - Note in entityengine.xml that a transaction manager looked up through 
JNDI must implement jakarta.transaction.
---
 .../apache/ofbiz/order/order/OrderServices.java    |  2 +-
 .../order/shoppinglist/ShoppingListServices.java   |  2 +-
 config/checkstyle/checkstyle.xml                   |  7 ++++++-
 dependencies.gradle                                |  4 ++--
 .../common/email/SmtpOAuth2TokenProvider.java      |  2 +-
 .../common/login/LdapAuthenticationServices.java   |  2 +-
 .../apache/ofbiz/common/login/LoginServices.java   |  2 +-
 framework/entity/config/entityengine.xml           |  2 +-
 .../entity/connection/DBCPConnectionFactory.java   | 22 ++++++++++----------
 .../entity/connection/DebugManagedDataSource.java  |  8 ++++----
 .../entity/transaction/DumbTransactionFactory.java | 18 ++++++++--------
 .../entity/transaction/GenericXaResource.java      | 10 ++++-----
 .../transaction/GeronimoTransactionFactory.java    |  4 ++--
 .../entity/transaction/JNDITransactionFactory.java |  4 ++--
 .../entity/transaction/TransactionFactory.java     |  4 ++--
 .../ofbiz/entity/transaction/TransactionUtil.java  | 24 +++++++++++-----------
 .../org/apache/ofbiz/entity/util/SequenceUtil.java |  2 +-
 .../ofbiz/service/GenericAbstractDispatcher.java   |  2 +-
 .../apache/ofbiz/service/ServiceDispatcher.java    |  2 +-
 .../ofbiz/service/ServiceSynchronization.java      | 10 ++++-----
 .../org/apache/ofbiz/service/ServiceXaWrapper.java |  4 ++--
 .../java/org/apache/ofbiz/service/job/JobUtil.java |  2 +-
 .../ofbiz/service/semaphore/ServiceSemaphore.java  |  2 +-
 .../apache/ofbiz/webapp/OfbizPathShortener.java    |  2 +-
 .../apache/ofbiz/webapp/control/LoginWorker.java   |  2 +-
 .../ofbiz/webtools/secret/SecretAuditLogger.java   |  2 +-
 gradle/libs.versions.toml                          | 12 +++++------
 27 files changed, 81 insertions(+), 78 deletions(-)

diff --git 
a/applications/order/src/main/java/org/apache/ofbiz/order/order/OrderServices.java
 
b/applications/order/src/main/java/org/apache/ofbiz/order/order/OrderServices.java
index eb3e9e30bd..406e56718a 100644
--- 
a/applications/order/src/main/java/org/apache/ofbiz/order/order/OrderServices.java
+++ 
b/applications/order/src/main/java/org/apache/ofbiz/order/order/OrderServices.java
@@ -34,7 +34,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.fop.apps.MimeConstants;
diff --git 
a/applications/order/src/main/java/org/apache/ofbiz/order/shoppinglist/ShoppingListServices.java
 
b/applications/order/src/main/java/org/apache/ofbiz/order/shoppinglist/ShoppingListServices.java
index 37a6976c94..fe86371f53 100644
--- 
a/applications/order/src/main/java/org/apache/ofbiz/order/shoppinglist/ShoppingListServices.java
+++ 
b/applications/order/src/main/java/org/apache/ofbiz/order/shoppinglist/ShoppingListServices.java
@@ -60,7 +60,7 @@ import org.apache.ofbiz.service.ServiceUtil;
 import org.apache.ofbiz.service.calendar.RecurrenceInfo;
 import org.apache.ofbiz.service.calendar.RecurrenceInfoException;
 
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 import org.apache.ofbiz.base.util.collections.PagedList;
 
 /**
diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml
index d275d9dd53..2791c02608 100644
--- a/config/checkstyle/checkstyle.xml
+++ b/config/checkstyle/checkstyle.xml
@@ -71,7 +71,12 @@ under the License.
 
         <!-- Checks for imports -->
         <module name="AvoidStarImport"/>
-        <module name="IllegalImport"/>
+        <module name="IllegalImport">
+            <!-- the JTA API is jakarta.transaction, only javax.transaction.xa 
(part of the JDK) remains in javax -->
+            <property name="regexp" value="true"/>
+            <property name="illegalPkgs" value="^sun\..*"/>
+            <property name="illegalClasses" 
value="^javax\.transaction\.[A-Z].*"/>
+        </module>
         <module name="RedundantImport"/>
         <module name="UnusedImports">
             <property name="processJavadoc" value="false"/>
diff --git a/dependencies.gradle b/dependencies.gradle
index adf6c8f670..fa58d1ea1b 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -36,13 +36,13 @@ dependencies {
     implementation libs.commons.net
     implementation libs.commons.validator
     implementation libs.javax.activation
-    implementation libs.javax.transaction.api
+    implementation libs.jakarta.transaction.api
     implementation libs.ical4j
     implementation libs.zip4j
     implementation libs.activiti.juel.jakarta
     implementation libs.commons.collections4
     implementation libs.commons.csv
-    implementation libs.commons.dbcp2
+    implementation libs.tomcat.dbcp
     implementation libs.commons.fileupload2.jakarta
     implementation libs.commons.text
     implementation libs.geronimo.transaction
diff --git 
a/framework/common/src/main/java/org/apache/ofbiz/common/email/SmtpOAuth2TokenProvider.java
 
b/framework/common/src/main/java/org/apache/ofbiz/common/email/SmtpOAuth2TokenProvider.java
index a25a0f2cba..2719f5e38c 100644
--- 
a/framework/common/src/main/java/org/apache/ofbiz/common/email/SmtpOAuth2TokenProvider.java
+++ 
b/framework/common/src/main/java/org/apache/ofbiz/common/email/SmtpOAuth2TokenProvider.java
@@ -23,7 +23,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.base.util.GeneralException;
diff --git 
a/framework/common/src/main/java/org/apache/ofbiz/common/login/LdapAuthenticationServices.java
 
b/framework/common/src/main/java/org/apache/ofbiz/common/login/LdapAuthenticationServices.java
index fc6a095dbf..0f72f882f0 100644
--- 
a/framework/common/src/main/java/org/apache/ofbiz/common/login/LdapAuthenticationServices.java
+++ 
b/framework/common/src/main/java/org/apache/ofbiz/common/login/LdapAuthenticationServices.java
@@ -27,7 +27,7 @@ import javax.naming.NamingException;
 import javax.naming.directory.DirContext;
 import javax.naming.directory.InitialDirContext;
 import javax.naming.ldap.Rdn;
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 
 import org.apache.ofbiz.base.crypto.HashCrypt;
 import org.apache.ofbiz.base.util.Debug;
diff --git 
a/framework/common/src/main/java/org/apache/ofbiz/common/login/LoginServices.java
 
b/framework/common/src/main/java/org/apache/ofbiz/common/login/LoginServices.java
index e2bb37057d..7743b03d8a 100644
--- 
a/framework/common/src/main/java/org/apache/ofbiz/common/login/LoginServices.java
+++ 
b/framework/common/src/main/java/org/apache/ofbiz/common/login/LoginServices.java
@@ -33,7 +33,7 @@ import java.util.stream.Collectors;
 
 import jakarta.servlet.ServletException;
 import jakarta.servlet.http.HttpServletRequest;
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 
 import org.apache.ofbiz.base.crypto.HashCrypt;
 import org.apache.ofbiz.base.util.Debug;
diff --git a/framework/entity/config/entityengine.xml 
b/framework/entity/config/entityengine.xml
index 9a4abe9640..cde6c60a8b 100644
--- a/framework/entity/config/entityengine.xml
+++ b/framework/entity/config/entityengine.xml
@@ -30,7 +30,7 @@ access. For a detailed description see the 
core/docs/entityconfig.html file.
     <!-- Use this one for Geronimo -->
     <transaction-factory 
class="org.apache.ofbiz.entity.transaction.GeronimoTransactionFactory"/>
 
-    <!-- Use this one for getting the JTA objects from JNDI -->
+    <!-- Use this one for getting the JTA objects from JNDI, they must 
implement the jakarta.transaction API (Jakarta EE 9 or later) -->
     <!-- NOTE: to use the JndiFactory you must specify the necessary JNDI 
properties
     <transaction-factory 
class="org.apache.ofbiz.entity.transaction.JNDITransactionFactory">
         <user-transaction-jndi jndi-server-name="default" 
jndi-name="java:comp/UserTransaction"/>
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/connection/DBCPConnectionFactory.java
 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/connection/DBCPConnectionFactory.java
index 0212b57649..902a0e2159 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/connection/DBCPConnectionFactory.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/connection/DBCPConnectionFactory.java
@@ -26,16 +26,8 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.transaction.TransactionManager;
-
-import org.apache.commons.dbcp2.DriverConnectionFactory;
-import org.apache.commons.dbcp2.PoolableConnection;
-import org.apache.commons.dbcp2.PoolableConnectionFactory;
-import org.apache.commons.dbcp2.managed.LocalXAConnectionFactory;
-import org.apache.commons.dbcp2.managed.PoolableManagedConnectionFactory;
-import org.apache.commons.dbcp2.managed.XAConnectionFactory;
-import org.apache.commons.pool2.impl.GenericObjectPool;
-import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
+import jakarta.transaction.TransactionManager;
+
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.entity.GenericEntityConfException;
 import org.apache.ofbiz.entity.GenericEntityException;
@@ -45,6 +37,14 @@ import org.apache.ofbiz.entity.config.model.JdbcElement;
 import org.apache.ofbiz.entity.datasource.GenericHelperInfo;
 import org.apache.ofbiz.entity.transaction.TransactionFactoryLoader;
 import org.apache.ofbiz.entity.transaction.TransactionUtil;
+import org.apache.tomcat.dbcp.dbcp2.DriverConnectionFactory;
+import org.apache.tomcat.dbcp.dbcp2.PoolableConnection;
+import org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory;
+import org.apache.tomcat.dbcp.dbcp2.managed.LocalXAConnectionFactory;
+import org.apache.tomcat.dbcp.dbcp2.managed.PoolableManagedConnectionFactory;
+import org.apache.tomcat.dbcp.dbcp2.managed.XAConnectionFactory;
+import org.apache.tomcat.dbcp.pool2.impl.GenericObjectPool;
+import org.apache.tomcat.dbcp.pool2.impl.GenericObjectPoolConfig;
 
 /**
  * Apache Commons DBCP connection factory.
@@ -109,7 +109,7 @@ public class DBCPConnectionFactory implements 
ConnectionFactory {
         cfProps.put("password", jdbcPassword);
 
         // create the connection factory
-        org.apache.commons.dbcp2.ConnectionFactory cf = new 
DriverConnectionFactory(jdbcDriver, jdbcUri, cfProps);
+        org.apache.tomcat.dbcp.dbcp2.ConnectionFactory cf = new 
DriverConnectionFactory(jdbcDriver, jdbcUri, cfProps);
 
         // wrap it with a LocalXAConnectionFactory
         XAConnectionFactory xacf = new LocalXAConnectionFactory(txMgr, cf);
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/connection/DebugManagedDataSource.java
 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/connection/DebugManagedDataSource.java
index 49801ad65e..f0339a82ee 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/connection/DebugManagedDataSource.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/connection/DebugManagedDataSource.java
@@ -24,11 +24,11 @@ import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.commons.dbcp2.managed.ManagedDataSource;
-import org.apache.commons.dbcp2.managed.TransactionRegistry;
-import org.apache.commons.pool2.ObjectPool;
-import org.apache.commons.pool2.impl.GenericObjectPool;
 import org.apache.ofbiz.base.util.Debug;
+import org.apache.tomcat.dbcp.dbcp2.managed.ManagedDataSource;
+import org.apache.tomcat.dbcp.dbcp2.managed.TransactionRegistry;
+import org.apache.tomcat.dbcp.pool2.ObjectPool;
+import org.apache.tomcat.dbcp.pool2.impl.GenericObjectPool;
 
 public class DebugManagedDataSource<C extends Connection> extends 
ManagedDataSource<C> {
 
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/DumbTransactionFactory.java
 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/DumbTransactionFactory.java
index a379447e7b..626e23855d 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/DumbTransactionFactory.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/DumbTransactionFactory.java
@@ -22,15 +22,15 @@ package org.apache.ofbiz.entity.transaction;
 import java.sql.Connection;
 import java.sql.SQLException;
 
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.InvalidTransactionException;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.UserTransaction;
 
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.entity.GenericEntityException;
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/GenericXaResource.java
 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/GenericXaResource.java
index b4bc096728..8f3fc38499 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/GenericXaResource.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/GenericXaResource.java
@@ -18,11 +18,11 @@
  
*******************************************************************************/
 package org.apache.ofbiz.entity.transaction;
 
-import javax.transaction.RollbackException;
-import javax.transaction.Status;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.Status;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/GeronimoTransactionFactory.java
 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/GeronimoTransactionFactory.java
index 7ba0248205..2b9862e1e1 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/GeronimoTransactionFactory.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/GeronimoTransactionFactory.java
@@ -21,8 +21,8 @@ package org.apache.ofbiz.entity.transaction;
 import java.sql.Connection;
 import java.sql.SQLException;
 
-import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.UserTransaction;
 import javax.transaction.xa.XAException;
 
 import org.apache.geronimo.transaction.log.UnrecoverableLog;
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/JNDITransactionFactory.java
 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/JNDITransactionFactory.java
index 87cb51fad4..04cef7541c 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/JNDITransactionFactory.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/JNDITransactionFactory.java
@@ -28,8 +28,8 @@ import javax.naming.NamingException;
 import javax.sql.DataSource;
 import javax.sql.XAConnection;
 import javax.sql.XADataSource;
-import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.UserTransaction;
 
 import org.apache.ofbiz.base.config.GenericConfigException;
 import org.apache.ofbiz.base.util.Debug;
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionFactory.java
 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionFactory.java
index e9e7dcfac9..04115f810a 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionFactory.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionFactory.java
@@ -21,8 +21,8 @@ package org.apache.ofbiz.entity.transaction;
 import java.sql.Connection;
 import java.sql.SQLException;
 
-import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.UserTransaction;
 
 import org.apache.ofbiz.entity.GenericEntityException;
 import org.apache.ofbiz.entity.datasource.GenericHelperInfo;
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionUtil.java
 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionUtil.java
index 626648668b..f0b4b3a80b 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionUtil.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/transaction/TransactionUtil.java
@@ -29,17 +29,17 @@ import java.util.Map;
 import java.util.concurrent.Callable;
 
 import javax.sql.XAConnection;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.InvalidTransactionException;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.Status;
+import jakarta.transaction.Synchronization;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.UserTransaction;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
@@ -489,7 +489,7 @@ public final class TransactionUtil implements Status {
 
     public static String getTransactionStateString(int state) {
         /*
-         * javax.transaction.Status
+         * jakarta.transaction.Status
          * STATUS_ACTIVE           0
          * STATUS_MARKED_ROLLBACK  1
          * STATUS_PREPARED         2
diff --git 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/SequenceUtil.java 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/SequenceUtil.java
index 397d120283..cd5ef0eee7 100644
--- 
a/framework/entity/src/main/java/org/apache/ofbiz/entity/util/SequenceUtil.java
+++ 
b/framework/entity/src/main/java/org/apache/ofbiz/entity/util/SequenceUtil.java
@@ -25,7 +25,7 @@ import java.sql.Statement;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.entity.GenericEntityException;
diff --git 
a/framework/service/src/main/java/org/apache/ofbiz/service/GenericAbstractDispatcher.java
 
b/framework/service/src/main/java/org/apache/ofbiz/service/GenericAbstractDispatcher.java
index 4d28c0ab65..e3e979ce44 100644
--- 
a/framework/service/src/main/java/org/apache/ofbiz/service/GenericAbstractDispatcher.java
+++ 
b/framework/service/src/main/java/org/apache/ofbiz/service/GenericAbstractDispatcher.java
@@ -21,7 +21,7 @@ package org.apache.ofbiz.service;
 import java.util.Date;
 import java.util.Map;
 
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.entity.Delegator;
diff --git 
a/framework/service/src/main/java/org/apache/ofbiz/service/ServiceDispatcher.java
 
b/framework/service/src/main/java/org/apache/ofbiz/service/ServiceDispatcher.java
index 75dcdb92e7..81de6e7557 100644
--- 
a/framework/service/src/main/java/org/apache/ofbiz/service/ServiceDispatcher.java
+++ 
b/framework/service/src/main/java/org/apache/ofbiz/service/ServiceDispatcher.java
@@ -26,7 +26,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 
 import org.apache.ofbiz.base.config.GenericConfigException;
 import org.apache.ofbiz.base.util.Debug;
diff --git 
a/framework/service/src/main/java/org/apache/ofbiz/service/ServiceSynchronization.java
 
b/framework/service/src/main/java/org/apache/ofbiz/service/ServiceSynchronization.java
index bc2135b9e5..582626e5b3 100644
--- 
a/framework/service/src/main/java/org/apache/ofbiz/service/ServiceSynchronization.java
+++ 
b/framework/service/src/main/java/org/apache/ofbiz/service/ServiceSynchronization.java
@@ -24,11 +24,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.WeakHashMap;
 
-import javax.transaction.RollbackException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.Status;
+import jakarta.transaction.Synchronization;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
 
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.entity.transaction.GenericTransactionException;
diff --git 
a/framework/service/src/main/java/org/apache/ofbiz/service/ServiceXaWrapper.java
 
b/framework/service/src/main/java/org/apache/ofbiz/service/ServiceXaWrapper.java
index b86b9abd20..0934b90885 100644
--- 
a/framework/service/src/main/java/org/apache/ofbiz/service/ServiceXaWrapper.java
+++ 
b/framework/service/src/main/java/org/apache/ofbiz/service/ServiceXaWrapper.java
@@ -21,8 +21,8 @@ package org.apache.ofbiz.service;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.transaction.Status;
-import javax.transaction.Transaction;
+import jakarta.transaction.Status;
+import jakarta.transaction.Transaction;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.Xid;
 
diff --git 
a/framework/service/src/main/java/org/apache/ofbiz/service/job/JobUtil.java 
b/framework/service/src/main/java/org/apache/ofbiz/service/job/JobUtil.java
index ca5e973931..651d17f60d 100644
--- a/framework/service/src/main/java/org/apache/ofbiz/service/job/JobUtil.java
+++ b/framework/service/src/main/java/org/apache/ofbiz/service/job/JobUtil.java
@@ -18,7 +18,7 @@
  
*******************************************************************************/
 package org.apache.ofbiz.service.job;
 
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.entity.GenericEntityException;
 import org.apache.ofbiz.entity.GenericValue;
diff --git 
a/framework/service/src/main/java/org/apache/ofbiz/service/semaphore/ServiceSemaphore.java
 
b/framework/service/src/main/java/org/apache/ofbiz/service/semaphore/ServiceSemaphore.java
index a3a5bb4a28..212e8ee52e 100644
--- 
a/framework/service/src/main/java/org/apache/ofbiz/service/semaphore/ServiceSemaphore.java
+++ 
b/framework/service/src/main/java/org/apache/ofbiz/service/semaphore/ServiceSemaphore.java
@@ -20,7 +20,7 @@ package org.apache.ofbiz.service.semaphore;
 
 import java.sql.Timestamp;
 
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.base.util.UtilDateTime;
diff --git 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/OfbizPathShortener.java
 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/OfbizPathShortener.java
index e33daf6775..d11ec8dddc 100644
--- 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/OfbizPathShortener.java
+++ 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/OfbizPathShortener.java
@@ -19,7 +19,7 @@
 package org.apache.ofbiz.webapp;
 
 import java.util.Map;
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 import org.apache.ofbiz.base.crypto.HashCrypt;
 import org.apache.ofbiz.base.util.StringUtil;
 import org.apache.ofbiz.base.util.UtilDateTime;
diff --git 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
index 661c623a69..b3ad4b4cc1 100644
--- 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
+++ 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
@@ -46,7 +46,7 @@ import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.servlet.http.HttpSession;
 import jakarta.servlet.jsp.PageContext;
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 
 import org.apache.http.HttpStatus;
 import org.apache.ofbiz.base.component.ComponentConfig;
diff --git 
a/framework/webtools/src/main/java/org/apache/ofbiz/webtools/secret/SecretAuditLogger.java
 
b/framework/webtools/src/main/java/org/apache/ofbiz/webtools/secret/SecretAuditLogger.java
index 4eac4da5a8..aaed04fe4f 100644
--- 
a/framework/webtools/src/main/java/org/apache/ofbiz/webtools/secret/SecretAuditLogger.java
+++ 
b/framework/webtools/src/main/java/org/apache/ofbiz/webtools/secret/SecretAuditLogger.java
@@ -20,7 +20,7 @@ package org.apache.ofbiz.webtools.secret;
 
 import java.util.List;
 
-import javax.transaction.Transaction;
+import jakarta.transaction.Transaction;
 
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.base.util.UtilDateTime;
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 23ea50a952..71663c2021 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -35,17 +35,15 @@ commons-cli = "1.11.0"
 commons-net = "3.13.0"
 commons-validator = "1.11.0"
 javax-activation = "1.1.1"
-javax-transaction-api = "1.3"
+jakarta-transaction-api = "2.0.1"
 ical4j = "1.0-rc4-atlassian-12"
 zip4j = "2.11.6"
 activiti-juel-jakarta = "8.1.0"
 commons-collections4 = "4.6.0"
 commons-csv = "1.14.1"
-commons-dbcp2 = "2.14.0"
 commons-fileupload2-jakarta = "2.0.0-M1"
 commons-text = "1.15.0"
-# 4.0.0 does not compile
-geronimo-transaction = "3.1.5"
+geronimo-transaction = "4.0.0"
 geronimo-jms-spec = "1.1.1"
 httpclient-cache = "4.5.14"
 # Shared by log4j-api, log4j-core, log4j-layout-template-json, 
log4j-legacy-api, log4j-jul,
@@ -61,7 +59,7 @@ sshd = "2.20.0"
 tika = "4.1.0"
 cxf-rt-frontend-jaxrs = "4.2.4"
 # Remember to change the version number (10 now) in javadoc block if needed. 
Shared by
-# tomcat-catalina-ha, tomcat-jasper.
+# tomcat-catalina-ha, tomcat-dbcp, tomcat-jasper.
 tomcat = "10.1.61"
 # Shared by axis2-kernel, axis2-transport-http, axis2-transport-local.
 axis2 = "1.8.2"
@@ -128,13 +126,13 @@ commons-cli = { module = "commons-cli:commons-cli", 
version.ref = "commons-cli"
 commons-net = { module = "commons-net:commons-net", version.ref = 
"commons-net" }
 commons-validator = { module = "commons-validator:commons-validator", 
version.ref = "commons-validator" }
 javax-activation = { module = "javax.activation:activation", version.ref = 
"javax-activation" }
-javax-transaction-api = { module = "javax.transaction:javax.transaction-api", 
version.ref = "javax-transaction-api" }
+jakarta-transaction-api = { module = 
"jakarta.transaction:jakarta.transaction-api", version.ref = 
"jakarta-transaction-api" }
 ical4j = { module = "net.fortuna.ical4j:ical4j", version.ref = "ical4j" }
 zip4j = { module = "net.lingala.zip4j:zip4j", version.ref = "zip4j" }
 activiti-juel-jakarta = { module = "org.activiti:activiti-juel-jakarta", 
version.ref = "activiti-juel-jakarta" }
 commons-collections4 = { module = "org.apache.commons:commons-collections4", 
version.ref = "commons-collections4" }
 commons-csv = { module = "org.apache.commons:commons-csv", version.ref = 
"commons-csv" }
-commons-dbcp2 = { module = "org.apache.commons:commons-dbcp2", version.ref = 
"commons-dbcp2" }
+tomcat-dbcp = { module = "org.apache.tomcat:tomcat-dbcp", version.ref = 
"tomcat" }
 commons-fileupload2-jakarta = { module = 
"org.apache.commons:commons-fileupload2-jakarta", version.ref = 
"commons-fileupload2-jakarta" }
 commons-text = { module = "org.apache.commons:commons-text", version.ref = 
"commons-text" }
 geronimo-transaction = { module = 
"org.apache.geronimo.components:geronimo-transaction", version.ref = 
"geronimo-transaction" }

Reply via email to