On Fri, 15 Apr 2011 02:48:24 +0200 Benjamin POUSSIN <poussin@codelutin.com> wrote:
On Thu, 14 Apr 2011 14:53:53 +0200 Tony Chemit <chemit@codelutin.com> wrote:
Ceci vaut pour la version 3.3.2 (celle de Topia) mais aussi pour la dernière version [2]...
Youhou, si c bien ca le probleme c super, je pense meme qu'il faudrait leur envoyer le patch pour eviter que d'autre se fasse avoir comme nous.
Y'a plus qu'a tester. Par contre, je me demande qui peut bien ferme la connexion ? L'application (mais ou ?) ou la base de données apres un certain temps (timeout) Le provider est fermé par la org.hibernate.impl.SessionFactoryImpl dans la méthode close.
pour le code j'aurais bien vu a la place de """ // before getting any connection, make sure there is not a closed // connection in pool, if so then remove them from the pool
Iterator<?> itr = pool.iterator(); while (itr.hasNext()) { Connection conn = (Connection) itr.next(); if (conn.isClosed()) {
// this connection is closed!, remove it itr.remove();
if (log.isDebugEnabled()) { log.debug("Remove already closed connection from pool " + connection); } } }
// try to use a connection from the pool (if any)
if (!pool.isEmpty()) { int last = pool.size() - 1; if (log.isTraceEnabled()) { log.trace("using pooled JDBC connection, pool size: " + last); }
connection = pool.remove(last); } } """
plutot une version qui verifie juste avant de renvoyer, ca evite de devoir faire le parcours de tout le pool a chaque demande de connexion:
""" // try to use a connection from the pool (if any)
while (!pool.isEmpty() && connection == null) { int last = pool.size() - 1; if (log.isTraceEnabled()) { log.trace("using pooled JDBC connection, pool size: " + last); }
connection = pool.remove(last); if (connection.isClosed()) {
// this connection is closed!, don't use it connection = null;
if (log.isDebugEnabled()) { log.debug("Remove already closed connection from pool " + connection); } } } } """
-- Tony Chemit -------------------- tél: +33 (0) 2 40 50 29 28 email: chemit@codelutin.com http://www.codelutin.com