Vi hade samma problem i ett produktionssystem med Tomcat6+Hibernate+MySQL (och Spring i vårt fall) och den enda tillförlitliga lösningen vi hittade var att ställa in timeout för anslutningen till ett stort värde i MySQL-konfigurationen. Jag kan inte komma ihåg detaljerna men jag tror att det var ett problem med den underliggande commons-poolen kod när den verifierar att poolad resurs är giltig.
En annan möjlighet som vi inte försökte var att använda en annan anslutningspoolningsmekanism än DBCP. Nästa att försöka skulle vara C3PO