Molto probabilmente hai una perdita di connessione. Una piscina gigantesca non aiuterà in questo. Consulta qui .
Appendice:idioma robusto per la pulizia delle risorse
È meglio quando puoi usare prova con le risorse
. Ma se stai lavorando con una versione precedente di Java (pre Java 7) o con risorse che non implementano AutoCloseable
potresti comunque dover tornare a questo genere di cose.
Connection c = null;
OtherResource or = null;
try
{
c = cpds.getConnection();
or = getOtherResource()
// do stuff
// ...
}
finally
{
try { if (or != null) or.close(); }
catch (Exception e) { e.printStackTrace(); }
try { if (c != null) c.close(); }
catch (Exception e) { e.printStackTrace(); }
}
Nota che la clausola finally verrà sicuramente eseguita se la connessione viene acquisita e c'è un miglior tentativo close() di ogni risorsa:If or
non riesce a chiudere(), quell'eccezione non impedirà il tentativo di chiudere() theConnection.
Devi stare molto attento. Come disse Keynes, ci sono molti scivoloni tra la tazza e il labbro.