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

时间:2013-03-13 18:51:11

标签: java jdbc database-connection sybase jndi

我似乎和this original SO question的海报一样存在同样的问题。

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

  

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

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

提前致谢。

3 个答案:

答案 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数据库会保持连接打开。