Problem:
Beim Remote-Bereitstellen einer Anwendung tritt die Ausnahme „com.mysql „.jdbc.Exceptions.jdbc4.MySQLNonTransientConnectionException: Keine Operationen zulässig, nachdem die Verbindung geschlossen wurde“ tritt nach der Anwendung auf läuft über einen Tag.
Ursache:
Der Fehler wird durch eine geschlossene Verbindung verursacht.
Mögliche Lösungen:
Verbindung Pooling:
Das integrierte Verbindungspooling von Hibernate ist begrenzt. Erwägen Sie die Verwendung einer Verbindungspooling-Lösung eines Drittanbieters wie 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>
Testen Sie die Verbindung vor der Verwendung:
Erstellen Sie eine „c3p0. Properties“-Datei im Stammverzeichnis des Klassenpfads mit der folgenden Eigenschaft:
<code class="properties">c3p0.testConnectionOnCheckout=true</code>
Dadurch wird jede Verbindung getestet Dies kann dabei helfen, fehlerhafte Verbindungen zu identifizieren und zu schließen.
Aktualisierte hibernate.cfg.xml-Konfiguration:
<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>
Hinweis:Testen Sie alle Konfigurationsänderungen immer in einer Entwicklungs- oder Staging-Umgebung, bevor Sie sie in der Produktion bereitstellen.
Das obige ist der detaillierte Inhalt vonWie behebe ich „MySQLNonTransientConnectionException: Nach dem Schließen der Verbindung sind keine Vorgänge zulässig“ in Remote-Anwendungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!