如何修复 Hibernate 中的'com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许操作”错误?

Barbara Streisand
发布: 2024-10-27 02:28:02
原创
452 人浏览过

How to Fix the

诊断“com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 连接关闭后不允许操作”错误

使用 Hibernate 时使用远程连接时,由于连接断开,您可能会遇到“连接关闭后不允许执行任何操作”错误。默认情况下,MySQL 有一个 wait_timeout 设置,可以导致连接在一段时间不活动后关闭。在长时间的应用程序运行期间或网络不稳定时,可能会发生这种情况。

使用 C3P0 进行连接池

要解决此问题,建议使用连接池库,例如C3P0。 Hibernate 的本机连接池是有限的,不适合生产环境。连接池建立了一个由应用程序管理和重用的连接池,减少了为每个查询建立新连接的开销。

使用 Hibernate 配置 C3P0

这里使用 C3P0 的更新配置文件:

<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="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">3600</property> <!-- seconds -->
登录后复制

在此配置中,使用池大小、超时和连接测试的适当设置启用 C3P0 连接提供程序。

其他潜在原因

如果连接池无法解决问题,则值得调查其他潜在原因,例如:

  • 防火墙或网络设置阻止连接
  • MySQL 配置问题,例如不正确的用户权限或过时的 JDBC 驱动程序
  • 服务器或应用程序上的内存或资源限制

以上是如何修复 Hibernate 中的'com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许操作”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!