J'ai déjà eu des problèmes comme celui-ci lorsque la base de données est sur une boîte séparée et qu'il y a un pare-feu entre les deux qui est configuré pour expirer les connexions inactives.
Dans certaines circonstances, le pare-feu coupe la connexion de telle manière que l'extrémité JDBC ne détecte pas, et toute tentative d'utilisation entraîne un blocage indéfini.
Dans mon cas, il s'agissait d'un pool de connexions personnalisé qui envoyait une requête de test sur la connexion avant de la renvoyer du pool. J'ai configuré cette requête de test pour qu'elle ait un délai d'attente (à l'aide de Statement.setQueryTimeout) afin qu'elle ne se bloque pas indéfiniment.