'jour.

J'ai crée une classe qui est chargée de récupérer la datasource de tomcat :

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;
    }
}
Lorsque j'ai besoin d'envoyer une requête, je crée un objet de cette classe et appel ma méthode executeQuery.

Mon soucis, c'est que je ne ferme jamais la connexion. Et donc forcement ya un moment où
javax.servlet.ServletException: Cannot get a connection, pool exhausted
Donc la question c'est : à quel moment dois-je faire mon conn.close() ?
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.