Salut,
Lors de la mise en place de bow 0.5 on est tombé sur une erreur avec
postgresql/dbcp. En gros le pool ferme la connexion puis l'enleve de
son cache (WeakHashMap) or, pour cela il a besoin de calculer le
hashCode de la connexion fermée qui contient alors null. Donc forcement
on avait un NPE :(.
En changeant le driver jdbc et en prenant le dernier (9.0) le probleme
est résolu.
Mais ensuite il y avait des problemes d'autocommit qui n'etait pas a
true (jamais detecté avec h2 qui doit sans doute par defaut donner des
connexions avec autocommit false)
En forceant dans la config le autocommit a false
wikitty.storage.jdbc.xadatasource.org.postgresql.xa.PGXADataSource.defaultAutoCommit=false
ca va mieux, mais j'en ai profite pour corriger dans wikitty pour qu'on
check bien qu'on travail avec des connexion autocommit=false pour
pouvoir faire des commit
On va plus loin, mais on a encore une erreur :(
Caused by: java.sql.SQLException: Connection does not have a registered XAResource jdbc:postgresql://localhost/bow?loginTimeout=0&socketTimeout=0&prepareThreshold=5&unknownLength=2147483647&loglevel=0&tcpkeepalive=false, UserName=dbuser, PostgreSQL Native Driver
at org.apache.commons.dbcp.managed.TransactionRegistry.getXAResource(TransactionRegistry.java:78)
at org.apache.commons.dbcp.managed.TransactionContext.setSharedConnection(TransactionContext.java:88)
at org.apache.commons.dbcp.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:131)
at org.apache.commons.dbcp.managed.ManagedConnection.<init>(ManagedConnection.java:55)
at org.apache.commons.dbcp.managed.ManagedDataSource.getConnection(ManagedDataSource.java:77)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at
org.nuiton.wikitty.jdbc.WikittyJDBCUtil.getConnection(WikittyJDBCUtil.java:299)
Si on met le XAResource a null, bow refonctionne, mais le probleme est
qu'il y a une valeur par defaut et qu'avec un fichier de config on peut
pas mettre la valeur a null, mais a vide au mieux, et la encore il y a
un bug dans wikitty (que j'ai corrigé) qui ne prenait pas en compte le
vide :(.
Donc avec la version actuelle stable de wikitty et bow ca ne pourra pas
fonctionner avec postgresql. Et de toute facon il faut encore chercher
le probleme de XAResource :(
Je met en place, une version snapshot, en attendant de corriger le
probleme pour que le service ne soit pas interrompu trop longtemps
--
Benjamin POUSSIN
--------------------
tél: +33 (0) 2 40 50 29 28
email: poussin(a)codelutin.com
http://www.codelutin.com