Bonjour,
J'ai un petit souci avec la méthode de DriverManager, setLoginTimeout(int).
D'après ce que j'ai lu, l'int qu'on spécifie est le temps maximum qu'un driver peut être chargé pour pouvoir se connecter à un DB, en gros...
Seulement voici dans quelle conditions je l'utilise:
Dans le catch, j'écris donc une exception particulière lorsque le logintimeout est atteint. Seulement voilà, si je le fixe à 300, dés la première fois qu'une connexion merde, le message envoyé à l'exception est directement "Login Timeout", alors que l'appli devrait attendre 300 secondes avant d'envoyer ce message, non ?!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 public boolean connexionDB() { boolean success = false; try { Class.forName(driver); //on vient de charger le driver if(test4==0) { ans.setTestTime(db_name,getStatusTime()); test4++; } int logtime = 300; DriverManager.setLoginTimeout(logtime); //temps d'attente maximum avant de faire une connexion, en seconde con =DriverManager.getConnection(suburl,sublogin, subpasswd); success = true; //on à créé la connexion } catch(ClassNotFoundException ex) { System.out.println("Driver JDBC Class Not Found: " + ex); System.out.println(""); } catch(Exception e) { String c = e.toString(); int logtimeout = DriverManager.getLoginTimeout(); if(logtimeout>=300) { c="LOGIN TIMEOUT "+logtimeout; } ans.setException(db_name,c); System.out.println("============================================="); System.out.println(">>>>>>>>>>>>>>>>>>>> Database: "+suburl); ans.setCantConnect(db_name); System.out.println(""); System.out.println("Error: Unreachable Database: " + e); System.out.println("============================================="); System.out.println(""); } return success; }
Donc voilà, je dois certainement très mal utiliser cette méthode.
Vous l'avez déjà utilisée ?
Y'aurait éventuellement des test à faire dessus ou autre ?
La question vous paraît peut-être bête, mais là sur le coup, avec la doc à côté je vois pas pourquoi mon code me génère direct l'exception avec la string "Login Timeout" (que j'ai écrite moi), alors que selon ce que je lis, il est censé attendre 300sec avant d'envoyer ce message...
Et, après seulement 10 seconde que mon programme tourne, si je consulte l'objet "exceptions", il y est déjà écris "Login Timeout" pour certaines DB...
D'avance merci.
Bien à vous.
Franck.
Partager