You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by bo...@apache.org on 2008/09/19 20:28:38 UTC
svn commit: r697176 -
/ode/trunk/engine/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java
Author: boisvert
Date: Fri Sep 19 11:28:38 2008
New Revision: 697176
URL: http://svn.apache.org/viewvc?rev=697176&view=rev
Log:
Properly close all PrepareStatements, ResultSets
Modified:
ode/trunk/engine/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java?rev=697176&r1=697175&r2=697176&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableModule.java Fri Sep 19 11:28:38 2008
@@ -193,15 +193,18 @@
Column c = dbev.new Column(name, colname, key.equalsIgnoreCase("yes"), gtype, expression);
ResultSet cmd = metaData.getColumns(null, dbev.schema, dbev.table, colname);
+ try {
if (cmd.next()) {
c.dataType = cmd.getInt("DATA_TYPE");
c.nullok = cmd.getInt("NULLABLE") != 0;
} else
throw new ExternalVariableModuleException("External variable " + evarId + " referenced "
+ "non-existant column \"" + colname + "\"!");
+ } finally {
+ cmd.close();
+ }
dbev.addColumn(c);
-
}
if (dbev.numColumns() == 0)
@@ -310,12 +313,13 @@
int execUpdate(DbExternalVariable dbev, RowKey key, RowVal values) throws SQLException {
Connection conn = dbev.dataSource.getConnection();
+ PreparedStatement stmt = null;
try {
if (__log.isDebugEnabled()) {
__log.debug("execUpdate: key=" + key + " values=" + values);
__log.debug("Prepare statement: " + dbev.update);
}
- PreparedStatement stmt = conn.prepareStatement(dbev.update);
+ stmt = conn.prepareStatement(dbev.update);
int idx = 1;
for (Column c : dbev._updcolumns) {
Object val = values.get(c.name);
@@ -338,6 +342,7 @@
}
return stmt.executeUpdate();
} finally {
+ if (stmt != null) stmt.close();
conn.close();
}
}
@@ -356,9 +361,10 @@
RowVal ret = dbev.new RowVal();
Connection conn = dbev.dataSource.getConnection();
+ PreparedStatement stmt = null;
try {
if (__log.isDebugEnabled()) __log.debug("Prepare statement: " + dbev.select);
- PreparedStatement stmt = conn.prepareStatement(dbev.select);
+ stmt = conn.prepareStatement(dbev.select);
int idx = 1;
for (Object k : rowkey) {
if (__log.isDebugEnabled()) __log.debug("Set key parameter "+idx+": "+k);
@@ -387,6 +393,7 @@
rs.close();
}
} finally {
+ if (stmt != null) stmt.close();
conn.close();
}
@@ -395,6 +402,7 @@
RowKey execInsert(DbExternalVariable dbev, Locator locator, RowKey keys, RowVal values) throws SQLException {
Connection conn = dbev.dataSource.getConnection();
+ PreparedStatement stmt = null;
try {
if (__log.isDebugEnabled()) {
__log.debug("execInsert: keys=" + keys + " values=" + values);
@@ -403,7 +411,7 @@
__log.debug("_autoColNames: " + ObjectPrinter.stringifyNvList(dbev._autoColNames));
}
- PreparedStatement stmt = keys.missingDatabaseGeneratedValues()
+ stmt = keys.missingDatabaseGeneratedValues()
? conn.prepareStatement(dbev.insert, dbev._autoColNames)
: conn.prepareStatement(dbev.insert);
@@ -430,6 +438,7 @@
if (keys.missingDatabaseGeneratedValues() ) {
// With JDBC 3, we can get the values of the key columns (if the db supports it)
ResultSet keyRS = stmt.getGeneratedKeys();
+ try {
if (keyRS == null)
throw new SQLException("Database did not return generated keys");
keyRS.next();
@@ -438,9 +447,13 @@
if (__log.isDebugEnabled()) __log.debug("Generated key "+ck.name+": "+value);
keys.put(ck.name, value);
}
+ } finally {
+ keyRS.close();
+ }
}
return keys;
} finally {
+ if (stmt != null) stmt.close();
conn.close();
}
}