Coisas que você pode tentar:
-
setMaxWait(-1)
no BasicDataSource. Isso diz para esperar indefinidamente por uma conexão.
-
Verifique se owait_timeout
em seu servidor MySQL está configurado para o padrão 8h.
-
Definir?autoReconnect=true
em seu URL JDBC
-
setTestOnBorrow(true)
no BasicDataSource. Isso impedirá que ele distribua conexões obsoletas, mas adicionará sobrecarga ao seu aplicativo (embora, se você já tiver consultas únicas tão longas, provavelmente nem notará essa parte).
Em geral, acho uma má ideia continuar reutilizando uma conexão. Para mim, o ponto de ter uma piscina é que eu não tenho que fazer isso.
Suas consultas são transacionais? Alguma consulta muito longa está bloqueando uma tabela principal?