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])) {
