In riferimento a Tomcat JBDC connection pool, vedo nell'esempio java standalone fornito in questo caso, si ottiene la connessione utilizzando datasource.getConnection()
che è interessante. Ma nel blocco finale, dice con.close()
.Pool di connessione Tomcat JDBC (connessione in uscita)
Domanda: Quando eseguo questa operazione, sembra ovvio che lo con
che ottengo dall'origine dati verrà chiuso ogni volta nell'ultimo. Quando questo è chiuso, il meccanismo di pooling delle connessioni acquisirà una nuova connessione e lo aggiungerà al pool?
Suppongo che ci debba essere una chiamata al metodo come releaseConnection()
che consentirà al pool di decidere autonomamente se chiuderlo o lasciarlo aperto per qualche altro uso.
Ho anche provato a fare questo ConnectionPool aPool = datasource.createPool();
Ma vedo che non c'è niente come connessione di rilascio su questo aPool
.
Penso che mi manchi qualcosa qui? Apprezzo il tuo aiuto.
Codice frammento dal Tomcat JBDC connection pool:
DataSource datasource = new DataSource();
datasource.setPoolProperties(p);
Connection con = null;
try {
con = datasource.getConnection();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from user");
int cnt = 1;
while (rs.next()) {
System.out.println((cnt++)+". Host:" +rs.getString("Host")+
" User:"+rs.getString("User")+" Password:"+rs.getString("Password"));
}
rs.close();
st.close();
} finally {
if (con!=null) try {con.close();}catch (Exception ignore) {}
}
Mantenere l'impostazione "MaxIdle" di DataSource sufficientemente alta da non chiudere tali connessioni. Impostandolo a 0 si spegne qualsiasi connessione chiusa, suppongo. – Hartmut