|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : décembre 2009 Messages : 66 ![]() |
Bonjour,
Je cherche à détecter quand ma base de données est inaccessible (pb réseau, serveur HS,...). Bref, quand le DriverManager.getConnection(...) échoue. Pour cela je fait un DriverManager.setConnection(1) avant mais le temps de réponse est très très loin de la seconde attendue. Voici mon code de test : Code :
timeout : 1 connection productConnection. Echec connection. Temps : 189.606 Lorsque la base est accessible j'obtiens les traces suivantes : timeout : 1 connection productConnection. timeout productConnection. Temps : 0.337 J'ai certainement loupé quelque chose quelque part mais je vois pas où. Si vous pouvez m'éclairer... Merci S. Combes |
||
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() Frédéric Inscription : juin 2011 Messages : 52 ![]() |
Bonjour,
J'ai eu le même problème que toi. Comme je n'ai pas trouvé la réponse, j'ai fait quelque chose dans ce style pour contourner le problème : Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Développeur java, access, sql server Inscription : octobre 2005 Messages : 851 ![]() |
Et en utilisant le setQueryTimeout sur un Statement ?
__________________
D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser. First, make it work. Then, make it fast. Finally, make it user-friendly. Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich. |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : décembre 2009 Messages : 66 ![]() |
@Fred_34 : Merci pour la méthode de contournement qui fonctionne bien (mais tu dois bien le savoir puisque tu l'utilise)
@Népomucène : Le setQueryTimeout s'utilise sur un Statement. Or, pour déclarer un Statement il faut d'abord avoir la connection et c'est justement ça qui est très long en cas d'échec. Merci quand même pour l'idée. Pour info j'utilise :
|
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Développeur java, access, sql server Inscription : octobre 2005 Messages : 851 ![]() |
Ce doit être un problème de driver car sous Windows quand je fais :
Code :
__________________
D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser. First, make it work. Then, make it fast. Finally, make it user-friendly. Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich. |
||
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : décembre 2009 Messages : 66 ![]() |
@Népomucène : Merci pour la piste.
Voici des infos supplémentaires : Sous windows, avec java version "1.6.0_29" Java(TM) SE Runtime Environment (build 1.6.0_29-b11) Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing) j'obtiens un timeout en une vingtaine de seconde. Je vais voir du côté de mysql-connector-java car la dernière version est 5.1.18. Je vous tiens au courant... S. Combes |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : décembre 2009 Messages : 66 ![]() |
alors j'ai essayé sous Linux (comme le premier essais) avec :
Le temps de réponse est toujours le même. N'ayant pas vraiment le temps de chercher plus loin j'ai mis en place le contournement de Fred_34 qui fonctionne. P.S. : je ne passe pas le sujet en résolu car j'ai espoir de pouvoir revenir dessus en trouver d'où vient le problème. S. Combes |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : mai 2008 Messages : 285 ![]() |
Je pense avoir le même problème que vous.
Mais dans le doute j'ai préféré ajouter une nouvelle discussion: http://www.developpez.net/forums/d11...bout-8-heures/ A savoir que la variable qui bloque la connexion ouverte dans mon cas, s'appelle wait time dans mysql Dans phpmyadmin accessible dans l'onglet variables:> tout en bas(wait timeout:28 800)// Qui correspond a 8 heures. |
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : novembre 2006 Messages : 5 063 ![]() |
As-tu essayé la méthode setLoginTimeout de DriverManager ?
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com