Cela peut être dû au fait que sur le serveur de base de données, il existe un délai d'attente pour ne pas autoriser les connexions à vivre au-delà d'un temps défini, ou à mourir s'il ne reçoit pas quelque chose indiquant qu'il est toujours valide. Une façon de résoudre ce problème consiste à activer les keepalives. Ceux-ci envoient un ping au serveur de base de données indiquant qu'il s'agit toujours de connexions valides.
Ceci est un très bon lien sur les configurations DBCP de Tomcats. Jetez un œil à la section intitulée "Prévenir les fuites du pool de connexions dB". Cela semble être un bon point de départ.