Bonjour,
je travaille sur une appli web et j'ai un problème au niveau des connections mysql.
J'utilise une "bean" ou je défini les fonctions de connections, d'executeQuery et executeUpdate et de fermeture.
Ce sont les suivantes:
Code:
1
2
3
4 // variables private Statement stmt; private Connection conn;
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public MySQLConnectionHandler(){ try { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); } catch (Exception e) { Log.out.println("Unable to load driver."); } try { conn = DriverManager.getConnection("jdbc:mysql://"+dbHost+"/"+dbName+"?user="+dbUser+"&password="+dbPasswd); } catch (SQLException sqle) { Log.out.println("Unable to established connection); conn = null; } }
Code:
1
2
3
4
5
6
7
8
9 public void close_connect(){ try{ stmt.close(); } catch(SQLException sqle){ Log.out.println("erreur fermeture connexion : "+sqle); } }
mes pages sont de cette formeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public ResultSet executeQuery(String query){ try { stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(query); return rs; } catch (SQLException sqle) { Log.out.println("executeQuery: SQLException: " + sqle.getMessage()); return null; } catch (Exception e) { Log.out.println("executeQuery: Exception: " + e.getMessage()); return null; } }
Tout fonctionne mais le problème est que mes connections ne se ferme jamais, elle sont tjs en sleep et au bout d'un moment mysql tombe en indiquant "too many connection".Code:
1
2
3
4
5
6
7
8
9 <jsp:useBean id="mysql" scope="session" class="com.viti.MySQLConnectionHandler" /> ResultSet marquere = mysql.executeQuery("SELECT ...") while(marquere!=null && marquere.next()){ //traitement } if(marquere!=null) marquere .close() mysql.close_connect()
si je decide de fermer la connection aprés chaque requete mysql ne redémarre pas :s
Une solution pourrait etre de limiter la durée de connection mais je ne sais pas comment faire.
Sinon si quelqu'un à une autre solution je suis à l'écoute.
merci pour votre aide
Mistify