Este tipo de problema surge cuando NO cerrando correctamente la conexión después del uso.
Nota:Si la JVM se cierra mientras se ejecuta el código try o catch, es posible que el bloque finalmente no se ejecute. Del mismo modo, si el subproceso que ejecuta el código try o catch se interrumpe o elimina, es posible que el bloque finalmente no se ejecute aunque la aplicación continúe en su conjunto.
Como ha pedido en el comentario, ¡he agregado el ejemplo de código para demostrarlo de manera práctica!
Connection con = null
try{
//Establishing connection to datasource
con = DBConnection.getConnection();
//perform DB operations
...
...
...
}catch(SQLException sqlEx){
/*To catch any SQLException thrown during DB
*Operations and continue processing like sending alert to admin
*that exception occurred.
*/
}finally{
/*This block should be added to your code
* You need to release the resources like connections
*/
if(con!=null)
con.close();
}
Tenga en cuenta que la declaración de Connection
la variable debe estar en el ámbito adecuado para cerrarla en finally
bloquear.
¡Espero que esto ayude!