Ahoj,
odpovídám na zprávu z pondělka, 20. února 2006,
kterou Martin Kuba napsal(a) v 10:55:22:
DBUtils vše korektně zavírají
public Object query(String sql, Object[] params, ResultSetHandler rsh)
throws SQLException {
Connection conn = this.prepareConnection();
try {
return this.query(conn, sql, params, rsh);
} finally {
close(conn);
}
}
public Object query(Connection conn, String sql, Object[] params,
ResultSetHandler rsh) throws SQLException {
PreparedStatement stmt = null;
ResultSet rs = null;
Object result = null;
try {
stmt = this.prepareStatement(conn, sql);
this.fillStatement(stmt, params);
rs = this.wrap(stmt.executeQuery());
result = rsh.handle(rs);
} catch (SQLException e) {
this.rethrow(e, sql, params);
} finally {
try {
close(rs);
} finally {
close(stmt);
}
}
Přičemž ty close funkce jsou definovány takto:
public static void close(Connection conn) throws SQLException {
if (conn != null) {
conn.close();
}
}
Neprovádí se tam tedy nastavení na null a uzavření v try{} bloku. Už jsem
na to slyšel pár názorů, ale zatím žádnou 100%.
--------------------------- Původní zpráva ---------------------------
Odesilatel: Martin Kuba <[EMAIL PROTECTED]>
Předmět: DataConnection pooling v Tomcatu
Datum: 20. února 2006, 10:55:22 (GMT +0100)
Přílohy: <none>
msgid:[EMAIL PROTECTED]
M> S temi DBUtils bych by opatrny, pokud jenom zaviraji Connection,
M> tak to nestaci, protoze Connection v TomCatu je jenom obalovatko,
M> jehoz close() vrati spojeni do poolu, neuzavre ho. Takze kdyz
M> neuzavrete ResultSety a Statementy, zustanou otevrene.
------------------------ Konec původní zprávy ------------------------
--
---------------------------------------------------------------------
Tomáš Procházka
E-mail: [EMAIL PROTECTED]
WWW: http://atom.sf.cz
ICQ: 87147320
---------------------------------------------------------------------