Comme vous le suggérez, c'est parce que mysql ferme les connexions inactives après chaque wait_timeout
passe; vous avez quelques options pour contourner votre problème :
- utiliser un gestionnaire de pool de connexions, comme c3p0 ou apache DBCP . Cela prendra en charge la revalidation des connexions sur demande, éventuellement vous pouvez spécifier quelle requête exécuter pour tester si la connexion est active.
- définir
wait_timeout
dans mysql suffisamment grand pour votre cas d'utilisation (la valeur par défaut est de 8 heures). - configurer une tâche planifiée (par exemple en utilisant quartz ) qui actualise les connexions, "ping" le serveur mysql.