Poiché DBCP mantiene aperte le connessioni MySQL restituite per le richieste di connessione imminenti, cadono vittime del Timeout di MySQL Server .
DBCP ha una serie di funzionalità che possono aiutare (può essere utilizzato a partire da Tomcat 5.5 IIRC).
validationQuery="SELECT 1"
testOnBorrow="true"
La convalida assicura che una connessione sia valida prima di restituirla a un'app Web che esegue il metodo 'prestito'. La bandiera ovviamente abilita questa funzione.
Se il timeout (credo 8 ore) è scaduto e la connessione è interrotta, viene testata una nuova connessione (se non ce ne sono più, viene creata) e fornita alla webapp.
Altri possibili approcci:
-
usa
testWhileIdle="true"
DBCP nelle impostazioni delle risorse per controllare anche le connessioni inattive prima che venga rilevata una richiesta effettiva. -
Usa 'connectionProperties' per rafforzare la tua connessione MySQL (ad es.
autoReconnect/autoReconnectForPools=true
)