栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许进行任何操作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许进行任何操作

正如@swanliu指出的,这是由于连接不良所致。
但是,在调整服务器时间和客户端超时之前,我将首先尝试并使用更好的连接池策略。

连接池

Hibernate本身承认其连接池策略很少

但是,Hibernate自己的连接池算法非常初级。它旨在帮助您入门,不适合在生产系统中使用,甚至不用于性能测试。您应该使用第三方池来获得最佳性能和稳定性。只需将hibernate.connection.pool_size属性替换为连接池特定的设置即可。这将关闭Hibernate的内部池。例如,您可能想使用c3p0。
如参考资料中所述
:http :
//docs.jboss.org/hibernate/core/3.3/reference/en/html/session-
configuration.html

我个人使用

C3P0
。但是,还有其他选择
DBCP

查看

  • http://www.mchange.com/projects/c3p0/index.html
  • http://commons.apache.org/dbcp/

以下是我的应用程序中使用的C3P0的最低配置:

<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">1800</property> <!-- seconds -->

默认情况下,池永远不会使连接失效。如果您希望连接随着时间过期以保持“新鲜”,请设置maxIdleTime和/或maxConnectionAge。maxIdleTime定义在从池中剔除连接之前,应允许连接闲置多少秒。maxConnectionAge强制池取消从数据库获取的所有连接,而超过过去设置的秒数。
如参考资料中所述: http
:
//www.mchange.com/projects/c3p0/index.html#managing_pool_size

编辑:
我更新了配置文件(参考),因为我刚才为项目复制并粘贴了该文件。超时应该理想地解决该问题,如果对您不起作用,那么有一个
昂贵的解决方案 ,我想您可以看一下:

创建一个文件“
c3p0.properties”,该文件必须位于类路径的根目录中(即无法对应用程序的特定部分覆盖它)。(参考)

# c3p0.propertiesc3p0.testConnectionOnCheckout=true

使用此配置,每个连接在使用前都经过测试。但是,这可能会影响网站的性能。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416505.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号