Paramétrer un timeout sur DriverManager.getConnection
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:
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
|
import java.sql.DriverManager;
import java.sql.SQLException;
public class Test {
public static void main(String[] args) {
long begin = System.currentTimeMillis();
DriverManager.setLoginTimeout(1);
System.out.println("timeout : " + DriverManager.getLoginTimeout());
try {
System.out.println("connection productConnection.");
DriverManager.getConnection(
"jdbc:mysql://192.168.239.224:3306/productBase", "user",
"user");
System.out.println("timeout productConnection.");
} catch (SQLException e) {
System.out.println("Echec connection.");
} finally {
long end = System.currentTimeMillis();
float time = ((float) (end - begin)) / 1000f;
System.out.println("Temps : " + time);
}
}
} |
Lorsque la base n'est pas accessible j'obtiens les traces suivantes :
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