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 : 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
 
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