我似乎和this original SO question的海报一样存在同样的问题。
问题是,他用以下评论回答了他自己的问题:
我解决了我的问题,我在我的JNDI数据源中添加了一个validationQuery。
不幸的是,这对我没有任何意义,并没有帮助我解决我的问题。所以我问:对于我的数据库(Sybase)和用于保存服务器查找信息的JNDI条目,什么是“validationQuery
”?
提前致谢。
答案 0 :(得分:9)
验证查询是数据源运行的查询,用于在返回之前验证Connection
是否仍处于打开状态。这是Tomcat的definition of a validation query;向下滚动到“4.配置Tomcat的资源工厂”部分的中间,查找“validationQuery”属性。
修改强>
根据this answer,如果验证查询失败,则不会抛出任何错误;删除坏/关闭连接并创建另一个连接以替换它。
答案 1 :(得分:2)
它与JNDI无关,而与JDBC数据源无关。
验证查询用于验证来自数据源连接池的连接, 在那些被转发给客户之前。通常这些是低影响查询,如 “SELECT 1 ...”或“SELECT SYSDATE ...”
答案 2 :(得分:1)
我认为这是一个测试DB连接是否正常工作的查询。在应用服务器级别上进行某种ping操作。
在原始问题中,定期ping数据库会保持连接打开。