Comme @swanliu l'a souligné, cela est dû à une mauvaise connexion.
Cependant, avant d'ajuster la synchronisation du serveur et le délai d'expiration du client, j'essaierais d'abord d'utiliser une meilleure stratégie de regroupement des connexions.
Regroupement de connexions
Hibernate lui-même admet que sa stratégie de regroupement de connexions est minimale
J'utilise personnellement C3P0
. cependant, il existe d'autres alternatives disponibles, y compris DBCP
.
Vérifier
Vous trouverez ci-dessous une configuration minimale de C3P0 utilisée dans mon application :
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="c3p0.max_size">100</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.min_size">10</property>
<property name="c3p0.timeout">1800</property> <!-- seconds -->
Modifier :
J'ai mis à jour le fichier de configuration (Référence
), car je venais de copier-coller celui de mon projet plus tôt. Le délai d'attente devrait idéalement résoudre le problème. Si cela ne fonctionne pas pour vous, il existe une solution coûteuse que je pense que vous pourriez jeter un œil :
Créez un fichier "c3p0.properties" qui doit être à la racine du chemin de classe (c'est-à-dire qu'il n'y a aucun moyen de le remplacer pour des parties particulières de l'application). (Référence )
# c3p0.properties
c3p0.testConnectionOnCheckout=true
Avec cette configuration, chaque connexion est testée avant d'être utilisée. Cela pourrait toutefois affecter les performances du site.