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

reta pushed a commit to branch 3.6.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit 7b1b85d0fefea4f28c13540c370974edbc2f736e
Author: Guillaume Nodet <[email protected]>
AuthorDate: Tue Mar 10 19:16:15 2026 +0100

    Fix resource leaks in PlugInClassLoader and RMTxStore (#2943)
    
    - Wrap InputStream in try-with-resources in
      PlugInClassLoader.getProperties()
    - Wrap ResultSet in try-with-resources in
      RMTxStore.verifyTable()
    
    Based on the valid parts of PR #2253 (CXF-9107).
    
    Closes #2253
    
    (cherry picked from commit 1c66ea6dfa94a18e45e1347380629bfeb476097b)
---
 .../org/apache/cxf/jca/core/classloader/PlugInClassLoader.java     | 4 +++-
 .../main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java | 7 ++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git 
a/integration/jca/src/main/java/org/apache/cxf/jca/core/classloader/PlugInClassLoader.java
 
b/integration/jca/src/main/java/org/apache/cxf/jca/core/classloader/PlugInClassLoader.java
index c9ec4943df..45bd93a945 100644
--- 
a/integration/jca/src/main/java/org/apache/cxf/jca/core/classloader/PlugInClassLoader.java
+++ 
b/integration/jca/src/main/java/org/apache/cxf/jca/core/classloader/PlugInClassLoader.java
@@ -93,7 +93,9 @@ public class PlugInClassLoader extends SecureClassLoader {
 
         Properties props = new Properties();
 
-        props.load(in);
+        try (InputStream is = in) {
+            props.load(is);
+        }
         LOG.fine("Contents: " + propsFileName + props);
 
         return props;
diff --git 
a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java 
b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java
index 2f5ac77d82..726d07b79c 100644
--- 
a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java
+++ 
b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java
@@ -880,11 +880,12 @@ public class RMTxStore implements RMStore {
     protected void verifyTable(Connection con, String tableName, String[][] 
tableCols) {
         try {
             DatabaseMetaData metadata = con.getMetaData();
-            ResultSet rs = metadata.getColumns(null, null, tableName, "%");
             Set<String> dbCols = new HashSet<>();
             List<String[]> newCols = new ArrayList<>();
-            while (rs.next()) {
-                dbCols.add(rs.getString(4));
+            try (ResultSet rs = metadata.getColumns(null, null, tableName, 
"%")) {
+                while (rs.next()) {
+                    dbCols.add(rs.getString(4));
+                }
             }
             for (String[] col : tableCols) {
                 if (!dbCols.contains(col[0])) {

Reply via email to