Problème pour fermer ma connection avec JDBCConnectionPool - Java - Programmation
Marsh Posté le 08-03-2005 à 14:52:54
Il est probable qu'il s'agisse d'un souci d'implémentation.
Quand on obtient une connection depuis un pool, on manipule un wrapper sur une connection réelle. L'appel de close() retourne la connection dans le pool sans réellement la fermer. Il est possible que l'implémentation du wrapper délègue le traitement de "isClosed" à la connection réelle. Ce n'est pas cohérent avec l'interface Connection mais correspond à une certaine réalité.
Marsh Posté le 08-03-2005 à 20:37:24
Ok, ça a effectivement du sens. Par contre, là j'ai un autre problème. Comme j'utilise un pool, en théorie, il va réutiliser les connections une fois que je n'en ait plus besoin. Cependant, il ne le fait pas. Pourtant, je fais un commit(), un close() et une assignation à null pour être certain de la libérer et je ne peux pas la réutiliser, pourquoi ???
stmt.close();
if(CdsBatch.getConnPOK() != null){
CdsBatch.getConnPOK().commit();
CdsBatch.getConnPOK().close();
CdsBatch.setConnPOK(null);
}
Marsh Posté le 08-03-2005 à 14:01:37
CdsBatch.setConnBRM(JDBCConnectionPool.getInstance(CdsBatchConstants.BMT_CONN_KEY).getConnection());
CdsBatch.getConnBRM().setAutoCommit(false);
int compteur = 0;
Statement stmt = CdsBatch.getConnBRM().createStatement();
stmt.executeQuery("select * from CDS.SUBSTRATE_PASS" );
ResultSet rs = stmt.getResultSet();
while (rs.next()){
compteur++;
}
System.out.println(compteur);
stmt.close();
if(CdsBatch.getConnBRM() != null){
CdsBatch.getConnBRM().rollback();
CdsBatch.getConnBRM().close();
}
if(!CdsBatch.getConnBRM().isClosed()){
fail("La connection aurait dû être fermée." );
}
Ce que j'essaie de faire. M'ouvrir une connection, faire un select, je regarde combien d'enregistrement je reçois ( j'en reçois le bon nombre ) et ensuite j'essaie de fermet ma connection mais ça fonctionne jamais. Je comprend vraiment pas pourquoi. Est-ce que quelqu'un a une idée ????
Merci