'jour.
J'ai crée une classe qui est chargée de récupérer la datasource de tomcat :
Lorsque j'ai besoin d'envoyer une requête, je crée un objet de cette classe et appel ma méthode executeQuery.
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 public class monDAO { private DataSource ds; private Connection conn; public monDAO() throws SQLException, Exception { InitialContext cxt = new InitialContext(); if ( cxt == null ) { throw new Exception("Pas de context!"); } ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/postgres" ); conn = ds.getConnection(); } public ResultSet executeQuery(String query) throws SQLException { PreparedStatement prstat = null; ResultSet set = null; prstat = conn.prepareStatement(query); set = prstat.executeQuery(); return set; } }
Mon soucis, c'est que je ne ferme jamais la connexion. Et donc forcement ya un moment où
Donc la question c'est : à quel moment dois-je faire mon conn.close() ?javax.servlet.ServletException: Cannot get a connection, pool exhausted
Après chaque requête ?
Si j'ai bien compris il n'y a pas vraiment de destructeur en java.
Et sinon est-il possible d'avoir mon objet tout le temps à disposition sans avoir à le réinstancier ?
J'utilise struts.
Partager