Maison > Article > base de données > Comment réparer « MySQLNonTransientConnectionException : aucune opération autorisée après la fermeture de la connexion » dans les applications distantes ?
Problème :
Lors du déploiement d'une application à distance, l'exception "com.mysql .jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException : Aucune opération autorisée après la fermeture de la connexion" se produit après l'exécution de l'application pendant plus d'une journée.
Cause :
L'erreur est provoquée par une connexion fermée.
Solutions potentielles :
Regroupement de connexions :
Le système intégré d'Hibernate en ce qui concerne la mise en commun des connexions, elle est limitée. Pensez à utiliser une solution de regroupement de connexions tierce telle que C3P0.
<code class="xml"><property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="c3p0.min_size">5</property> <property name="c3p0.max_size">20</property> <property name="c3p0.max_statements">50</property> <property name="c3p0.maxIdleTime">3600</property></code>
Testez la connexion avant utilisation :
Créez un fichier "c3p0. Properties" à la racine du chemin de classe avec la propriété suivante :
<code class="properties">c3p0.testConnectionOnCheckout=true</code>
Cela testera chaque connexion avant de l'utiliser, ce qui peut aider à identifier et à fermer les connexions défectueuses.
Configuration hibernate.cfg.xml mise à jour :
<code class="xml"><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/xyz</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.show_sql">false</property> <property name="hibernate.current_session_context_class">thread</property> <property name="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</property> <property name="hibernate.c3p0.min_size">5</property> <property name="hibernate.c3p0.max_size">20</property> <property name="hibernate.c3p0.max_statements">50</property> <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="c3p0.max_statements">0</property> <property name="c3p0.maxIdleTimeExcessConnections">3600</property> <property name="c3p0.idleConnectionTestPeriod">3600</property> <property name="c3p0.maxIdleTime">3600</property></code>
Remarque : Testez toujours toutes les modifications de configuration sur un environnement de développement ou de test avant de les déployer en production. .
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!