Dado que DBCP mantiene abiertas las conexiones mysql devueltas para las próximas solicitudes de conexión, son víctimas del tiempo de espera del servidor MySQL .
DBCP tiene una serie de funciones que pueden ayudar (se pueden usar a partir de Tomcat 5.5 IIRC).
validationQuery="SELECT 1"
testOnBorrow="true"
La validación se asegura de que una conexión sea válida antes de devolverla a una aplicación web que ejecuta el método 'préstamo'. La bandera, por supuesto, habilita esta característica.
Si el tiempo de espera (8 horas, creo) ha transcurrido y la conexión está muerta, entonces se prueba una nueva conexión (si ya no hay ninguna, se crea) y se proporciona a la aplicación web.
Otros enfoques posibles:
-
usa el
testWhileIdle="true"
DBCP en su configuración de recursos para verificar también las conexiones inactivas antes de que se detecte una solicitud efectiva. -
Use las 'propiedades de conexión' para fortalecer su conexión MySQL (por ejemplo,
autoReconnect/autoReconnectForPools=true
)