问题:
远程部署应用程序时,出现异常“com.mysql”应用程序运行一天多后,出现“.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No actions allowed after connection close”的错误。
原因:
导致错误通过关闭连接。
潜在解决方案:
连接池:
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>
使用前测试连接:
创建一个“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中文网其他相关文章!