Problème pour fermer ma connection avec JDBCConnectionPool

Problème pour fermer ma connection avec JDBCConnectionPool - Java - Programmation

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

Reply

Marsh Posté le 08-03-2005 à 14:01:37   

Reply

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é.

Reply

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);
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed