正如@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
使用此配置,每个连接在使用前都经过测试。但是,这可能会影响网站的性能。



