Bonjour,
J'utilise PostgreSQL avec une DataSource. Jusqu'ici tout allait bien mais là j'ai supprimé mon projet (Tomcat) et l'ai redéployé et les connexions SQL ne fonctionnent plus. J'ai ce message d'erreur (je le récupère dans un catch et l'affiche sur ma vue en cas d'erreur ):
En cherchant sur Google, peu de cas similaires (aucun avec Tomcat), il s'agirait de connexions mal fermées, en ce qui me concerne je fais par exemple ceci :Cannot create PoolableConnectionFactory (FATAL: les emplacements de connexions restants sont réservés pour les connexion superutilisateur non relatif ? la réplication)
C'est dans la superclasse que se trouve getConn() ainsi que closeConnection()
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 private voidmethod() { try { id = 0; String query = "SELECT..."; try (PreparedStatement prepare = getConn().prepareStatement(query)) { prepare.setString(1, getCookieCode()); prepare.setInt(2, 1); try (ResultSet result = prepare.executeQuery()) { if (result.next()) { id = result.getInt("id"); } } } } catch (SQLException ex) { Logger.getLogger(User.class.getName()).log(Level.SEVERE, null, ex); setTest(2); setErrorMsg("Erreur SQL<br/>"); } finally { closeConnection(); } }
Ce n'est pas normal qu'il me refuse la connexion, d'autant que mon site n'a pas un gros trafic ça devrait passer.
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 private void initDataSource() { try { InitialContext cxt = new InitialContext(); ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/myBDD"); } catch (NamingException ex) { Logger.getLogger(SuperClass.class.getName()).log(Level.SEVERE, null, ex); test = 2; errorMsg = "Impossible de trouver la DataSource.<br/>"; System.out.println("error"); } } public void closeConnection() { try { if (conn != null) { //String cstr = conn.toString(); conn.close(); //System.out.println("Deconnexion : " + cstr); } } catch (SQLException ex) { Logger.getLogger(SuperClass.class.getName()).log(Level.SEVERE, null, ex); setTest(2); setErrorMsg("Impossible de se deconnecter (SQL)"); } } [...] /** * @return the conn * @throws java.sql.SQLException */ public Connection getConn() throws SQLException { if (conn == null || conn.isClosed()) { if(ds==null) { initDataSource(); } conn = getDs().getConnection(); } return conn; }
Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?
Merci d'avance pour votre aide.
Partager