【 问题描述】
后台代码:java
数据库:mysql
服务器:Linux下的Tomcat
发布方式:将项目打成war包,放到tomcat的webapps下
发布后,次日总是不能取得数据库数据,重启tomcat后,问题消失。
【原因】
数据库连接方式采用的是,使用一个静态的connection对象。
数据库mysql配置文件有个以下两个参数,不设置时,默认为28800即8小时。
由于你的链接不是每次访问现从连接池取的。所以当你的这个静态connection对象有8小时没有访问mysql。
就会达到wait_timeout的值。
【解决方案】
方案一:把这个时间改长点。
set interactive_timeout=
288000;
set wait_timeout=288000;
方案二:写个select 1和从新创建链接的类。然后让tomcat全局监听.
每一小执行以下select1
每次发现异常,调用重新创建链接的方法
方案三:
改变链接方式,使用连接池。