Aucune opération autorisée après la fermeture de la connexion Exception
Description :
Cette exception se produit lorsqu'un une tentative est effectuée pour exécuter une opération après la fermeture de la connexion à la base de données. La cause sous-jacente est souvent un problème de délai d'attente de connexion.
Causes possibles :
Solution :
Regroupement de connexions
Assurez-vous qu'une bibliothèque de regroupement de connexions tierce est utilisée à la place du pool de connexions par défaut d'Hibernate, car elle n'est pas adaptée aux environnements de production. Pensez à utiliser C3P0 ou DBCP.
Configuration du délai d'expiration côté serveur
Ajustez le paramètre wait_timeout dans MySQL à une valeur plus élevée pour éviter les fermetures prématurées de connexion.
Configuration du délai d'expiration côté client
Augmentez les propriétés maxConnectionAge et maxIdleTime du pool de connexions pour prolonger la durée de vie des connexions.
Exemple de configuration C3P0 :
<code class="xml"><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 --> </code>
Remarque supplémentaire :
La propriété "c3p0.testConnectionOnCheckout=true" peut être définie pour tester les connexions avant d'être utilisée, mais cela peut avoir un impact sur les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!