SQLException : Connexion interrompue

SQLException : Connexion interrompue - Java - Programmation

Marsh Posté le 10-03-2008 à 15:54:08    

Bonjour à tous !
 
J'ai un petit soucis avec une exception Oracle qui m'empêche d'avancer depuis qques jours déjà..
 
Je me connecte à la base de donnée avec un objet java.sql.Connection avec le driver "oracle.jdbc.driver.OracleDriver".
 
J'utilise la meme connexion pour effectuer tous mes traitements (simples requêtes SELECT)
Un algorithme simple de mon programme serait le suivant :
 
- Selection de données
- Traitements divers à partir des résultats retournés...
- Selection de données
- Traitements divers à partir des résultats retournés...
- etc...
 
Le problème est que les traitements divers (déplacements de nombreux fichiers, etc.) peuvent prendre un certain temps (de l'ordre d'une 40aines de minutes, voire +), du coup lors de la 2ème selection de données avec le même objet Connection, la connexion est perdue (un genre de timeout).
 
J'obtiens l'erreur suivante :
 

Code :
  1. java.sql.SQLException: Connexion interrompue


 
 
Y a-t-il un moyen de détecter que la connexion a été interrompue puis de la réouvrir avant que j'effectue la 2ème requête SELECT ?
 
Je préfère toujours garder la même connexion car à la fin j'effectue un COMMIT de tous les traitements qui ont été effectués sur la connexion. Si j'en ouvre plusieurs ça va pas le faire :/
 
 
Merci d'avance pour votre aide !

Reply

Marsh Posté le 10-03-2008 à 15:54:08   

Reply

Marsh Posté le 10-03-2008 à 16:13:41    

Si tu détectes la perte de connexion pour la réouvrir ensuite, tu n'auras de toute façon pas la même connexion !
 
Sinon, en gèrant simplement l'exception avec un try / catch, ça n'irait pas ?


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 10-03-2008 à 19:36:20    

Dans ce cas le probleme vient plutot de la gestion du pool de connexion, tu dois éviter que la connexion soit automatiquement fermée apres le laps de temps déterminé (en général c'est 30min d'innactivité par défaut).
 
Si tu n'arrives pas à changer ça alors tu vas devoir utiliser une technique un peu sale qui consiste a envoyer une requete "SELECT 1" toutes les 10min juste pour éviter l'IDLE...

Reply

Sujets relatifs:

Leave a Replay

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