Le plus simple est de configurer le pool de connexion pour spécifier la requête à exécuter pour tester la connexion avant qu'elle ne soit passée à l'application :
validationQuery="select 1 as dbcp_connection_test"
testOnBorrow=true
Cette même requête de "validation de connexion" peut être exécutée sur d'autres événements. Je ne suis pas sûr des valeurs par défaut pour ceux-ci :
testOnReturn=true
testWhileIdle=true
Il existe également des paramètres de configuration qui limitent "l'âge" des connexions inactives dans le pool, ce qui peut être utile si les connexions inactives sont fermées côté serveur.
minEvictableIdleTimeMillis
timeBetweenEvictionRunsMillis
http://commons.apache.org/dbcp/configuration.html