问题描述:
正常登录系统,不操作,过20分钟后,超时登录浏览器卡死问题(这时用别的浏览器打开时能正常登录)环境:tomcat与数据库服务器不在同一个网段。
分析
出错的原因是,获取数据库连接时超时,默认需要等20分钟后才返回数据数据库连接超时错误,导致这个期间浏览器卡死。解决方案
方案一:修改tomcat中数据库的连接参数原因:在长时间没有访问tomcat后,数据库连接已经失效,连接池因为没有检测,所以认为连接有效,导致连接出错。避免这种错误的方法是设置连接有效查询sql语句。设置后,连接池会使用该sql语句测试连接是否有效,如果无效,会重新建立连接。解决方案:
设置方法为:在%JUSTEP_HOME%\apache-tomcat\conf\context.xml中的节点中增加属性validationQuery
mysql数据库:
SQLServer数据库:
在server.xml中的节点中增加属性validationQuery=”select sysdate from dual;”。例如:
oralce示例
其中:
如果jdbc的版本<10.1.0.5时, 使用oracle.net.READ_TIMEOUT=5000;如果jdbc的版本>=10.1.0.5时,使用oracle.jdbc.ReadTimeout=5000;其中的5000单位是秒,可以结合自己的实际需求调整大小。方案二:调整网络
使得tomcat与数据库服务器在同一个网段内。ps:本文章节选自Wex5论坛