Bonjour à tous,
Je suis actuellement en développement d'une application web en Java-J2EE sur le serveur Tomcat. Cette application utilise une base de données MySQL. Après une nuit d'inactivité, la connexion ne se fait pas au premier chargement de la page web, mais un raffraichissement de celle ci permet d'obtenir cette connexion. Je suis sur ce problème depuis maintenant quelques jours (difficile de faire des tests régulier étant données que le problème n'arrive qu'une fois dans la journée) et je ne sais pas comment je peux le résoudre.
Voici le code de connexion à la base :
Si vous avez quelques idées, je suis preneur!
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 public class DBConnexion { private static DBConnexion db; private DataSource ds; private DBConnexion() throws ClassNotFoundException, SQLException{ try { Context init = new InitialContext(); Context env = (Context) init.lookup("java:/comp/env/"); ds = (DataSource) env.lookup("jdbc/poolingConnexion"); } catch (NamingException e) { e.printStackTrace(); } } public static synchronized DBConnexion getInstance(){ if( db == null ){ try { db = new DBConnexion(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } return db; } public synchronized Connection getConnexion(){ try { Connection conn = ds.getConnection(); if( !isValid(conn)){ db = new DBConnexion(); } return conn; } catch (Exception e) { e.printStackTrace(); return null; } } public static synchronized ResultSet executeQuery(Statement state, String query){ try { return state.executeQuery(query); } catch (SQLException e) { e.printStackTrace(); return null; } } public static boolean isValid(Connection connection){ if(connection==null){ return false; } ResultSet ping = null; try{ if(connection.isClosed()){return false;} ping = connection.createStatement().executeQuery("SELECT 1"); return ping.next(); }catch(SQLException sqle){ return false; } finally{ if(ping!=null){try{ping.close();}catch(Exception e){}} } }
Merci.
Partager