Lo más fácil es configurar el conjunto de conexiones para especificar la consulta que se ejecutará para probar la conexión antes de pasarla a la aplicación:
validationQuery="select 1 as dbcp_connection_test"
testOnBorrow=true
Esta misma consulta de "validación de conexión" se puede ejecutar en otros eventos. No estoy seguro de los valores predeterminados para estos:
testOnReturn=true
testWhileIdle=true
También hay opciones de configuración que limitan la "edad" de las conexiones inactivas en el grupo, lo que puede ser útil si las conexiones inactivas se cierran en el extremo del servidor.
minEvictableIdleTimeMillis
timeBetweenEvictionRunsMillis
http://commons.apache.org/dbcp/configuration.html