什么是关于数据库和JNDI的validationQuery?

我似乎和这个原始SO问题的海报有着同样的问题。

问题是,他用以下评论回答了他自己的问题:

我解决了我的问题,我在我的JNDI数据源中添加了一个validationQuery。

不幸的是,这对我没有任何意义,并没有帮助我解决我的问题。 所以我问:关于我的数据库(Sybase)和用于保存服务器查找信息的JNDI条目,什么是“ validationQuery ”?

提前致谢。

validation查询是由数据源运行的查询,用于在返回之前validationConnection是否仍处于打开状态。 这是Tomcat 对validation查询的定义 ; 向下滚动到“4.配置Tomcat的资源工厂”部分的中间,查找“validationQuery”属性。

编辑

根据这个答案 ,如果validation查询失败,则不会抛出任何错误; 删除坏/关闭连接并创建另一个连接以替换它。

它与JNDI无关,而与JDBC数据源无关。

validation查询用于validation来自数据源连接池的连接,然后再将这些连接传递给客户端。 通常这些是低影响查询,例如“SELECT 1 …”或“SELECT SYSDATE …”

我假设它是一个测试,以测试数据库连接是否正常工作。 在应用程序服务器级别上进行某种ping操作。

在原始问题中,定期ping数据库会保持连接打开。