很久没有更新日志了,主要最近一直从事程序开发和项目管理的一些事情,没有遇到什么问题。今天对最近开发的web程序进行部署时,发现了问题。
这个问题可能大部分用过hibernate的开发人员都遇到过,即“tomcat运行一段时间,比如一晚上后,发现原来能打开的网页现在都出现了问题”。探其究竟,其实是数据库访问失败。这又是为什么呢?原来mysql数据库默认的一个选项“wait-timeout=28800",(wait-timeout —— the number of seconds to wait for activity on an incoming connection before closing it. The default is 28800 seconds. This option was added in MySQL 5.1.7. Before that, the timeout is 30 seconds and cannot be changed.)。所以过了这么长时间后,由于长时间没有与数据库通信,此连接被强行断开。
这时,就需要修改hibernate的数据库连接选项。采用的方法也是网络上推荐的,即选用c3p0这种方式连接数据库,而不选用默认自带的方式。主要修改了
connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
c3p0.idle_test_period = 3000
c3p0.timeout = 5000
(附:刚开始设置为net.sf.hibernate.connection.C3P0ConnectionProvider,一直报错啊,呜呜呜呜)