问题描述:
平台登陆的时候没有问题,但是当从平台进入各个子平台的时候会出现用户名不存在的问题,但是当再次进入这个子系统的时候就是正常的。
解决方法:
后来经过认真的分析,发现是我们连接的数据库有问题,数据库放在了一个个人电脑了,经常会关机,所以导致数据库连接经常性断了,所以出现了上述情况。
1、 设置validationQuery属性
validationQuery:用于验证连接是否成功的查询SQL语句,SQL语句必须至少要返回一行数据,如你可以简单地设置为:“select 1 from dual”;
2、 把maxActive设置大于0,maxActive:最大连接数据库连接数,设置为0时,表示没有限制;
问题总结:
当数据库连接池中的连接被创建而长时间不使用的情况下,该连接会自动回收并失效,但客户端并不知道,在进行数据库操作时仍然使用的是无效的数据库连接,这样,就导致客户端程序报“ java.sql.SQLException: Io 异常: Connection resetby peer”或“java.sql.SQLException 关闭的连接”异常,加上<propertyname="validationQuery" value="select * from dual"/>
配置后,客户端在使用一个无效的连接时会先对该连接进行测试,如果发现该连接已经无效,则重新从连接池获取有效数据库连接来使用
以上是个人的分析和理解,有不对的