On Thu, 14 Apr 2011 14:47:11 +0200 Tony Chemit <chemit@codelutin.com> wrote:
Hello,
Je pense avoir corrigé cette anomalie : http://nuiton.org/issues/show/561
En fait l'utilisation du ConnectionProvider fournit par hibernate (org.hibernate.connection.DriverManagerConnectionProvider) pose un problème de gestion des connections fermées [0].
Ceci vaut pour la version 3.3.2 (celle de Topia) mais aussi pour la dernière version [2]...
En effet on met dans le pool lorsqu'on ferme la connection (au niveau de l'api d'hibernate). En fait la connection n'est pas fermée (au niveau JDBC).
Le problème c'est que l'on ne vérifie pas si cette connection n'a pas été fermée au niveau JDBC et donc on peut mettre dans le pool une connection fermée et donc non utilisable ensuite.
J'ai écrit une nouvelle version de la classe de base (org.nuiton.topia.framework.TopiaConnectionProvider).
(j'ai pas pu étendre celle d'hibernate vu que tout est en private sans aucun accesseur (bouh!)) donc un petit fork nécessaire.
Pour les curieux mon provider est ici : [1]
Pour ceux qui ont eu le problème il faudrait essayer ce provider, et bien s'assurer qu'hibernate l'utilise (je pense à jboss qui pourrait faire des siennes et utiliser une DataSource ?).
A vos réactions ;) et bon tests.
[0] http://www.docjar.com/docs/api/org/hibernate/connection/DriverManagerConnect...
[1] http://svn.nuiton.org/svn/topia/trunk/topia-persistence/src/main/java/org/nu...
[2] https://github.com/hibernate/hibernate-core/blob/master/hibernate-core/src/m... -- Tony Chemit -------------------- tél: +33 (0) 2 40 50 29 28 email: chemit@codelutin.com http://www.codelutin.com