Bonjour, j'ai plusieurs sites JSF, j'utilise postgresql avec des datasource, ça marche quelque-temps puis j'ai fatalement cette sqlException :
voici le type de datasource que j'utilise en context.xml sur un Apache Tomcat/8.0.14
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Erreur SQL. Cannot create PoolableConnectionFactory (FATAL: les emplacements de connexions restants sont réservés pour les connexions superutilisateur non relatif à la réplication)
en ce qui concerne cette datasource je l'ai surtout conçu d'après des exemples trouvés sur internet je n'arrive pas à saisir la signification de tous les attributs, même sur la doc en Anglais j'ai du mal à comprendre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <Resource auth="Container" driverClassName="org.postgresql.Driver" logAbandoned="true" maxIdle="100" maxTotal="200" maxWaitMillis="10" name="jdbc/myBDD" password="XXXXXXXX" removeAbandonedOnBorrow="true" removeAbandonedTimeout="20" type="javax.sql.DataSource" url="jdbc:postgresql://127.0.0.1:5432/xxxxxxxxxxxx" username="xxxxxxxxxxxxxxx"/>
Pour mes connexion j'utilise un singleton je ne close pas la connexion car je veux réutiliser l'instance Connection à chaque fois :
Database.java :
instance que j'utilise comme cela :
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 import java.sql.Connection; import java.sql.SQLException; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; /** * * @author pj */ public class Database { private static Database instance; private static DataSource ds; private static Connection conn; private Database() throws NamingException, SQLException { InitialContext cxt = new InitialContext(); ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/myBDD"); conn = ds.getConnection(); } public static Database getInstance() throws NamingException, SQLException { if (instance == null) { instance = new Database(); } return instance; } public Connection getConn() { return conn; } }
Merci ! :-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [...] private void upgradeRel() throws NamingException, SQLException { String query = "insert into localisation_site (id_localisation, id_site) values (?,?)"; try (PreparedStatement prepare = Database.getInstance().getConn().prepareStatement(query)) { prepare.setLong(1, localisation.id); prepare.setLong(2, id); prepare.executeUpdate(); } } [...]
Partager