首页 >数据库 >mysql教程 >如何修复远程应用程序中的'MySQLNonTransientConnectionException:连接关闭后不允许执行任何操作”?

如何修复远程应用程序中的'MySQLNonTransientConnectionException:连接关闭后不允许执行任何操作”?

Linda Hamilton
Linda Hamilton原创
2024-10-30 13:11:02641浏览

How to Fix

MySQL 非瞬态连接异常

问题:

远程部署应用程序时,出现异常“com.mysql”应用程序运行一天多后,出现“.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No actions allowed after connection close”的错误。

原因:

导致错误通过关闭连接。

潜在解决方案:

  1. 连接池:

    Hibernate 的内置 -连接池是有限的。考虑使用第三方连接池解决方案,例如 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>
  2. 使用前测试连接:

    创建一个“c3p0.5”文件。类路径根目录中的“properties”文件具有以下属性:

    <code class="properties">c3p0.testConnectionOnCheckout=true</code>

    这将在使用每个连接之前对其进行测试,这可以帮助识别和关闭错误的连接。

更新了 hibernate.cfg.xml 配置:

<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>

注意: 在将配置更改部署到生产环境之前,始终在开发或暂存环境中测试任何配置更改.

以上是如何修复远程应用程序中的'MySQLNonTransientConnectionException:连接关闭后不允许执行任何操作”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn