【问题标题】:What is a validationQuery with respect to databases and JNDI?什么是关于数据库和 JNDI 的验证查询?
【发布时间】:2013-03-01 21:32:53
【问题描述】:

我似乎和this original SO question的发帖者有同样的问题。

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

我解决了我的问题,我向我的 JNDI 数据源添加了一个验证查询。

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

提前致谢。

【问题讨论】:

标签: java jdbc database-connection sybase jndi


【解决方案1】:

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

编辑

根据this answer,如果验证查询失败,则不抛出错误;坏/关闭的连接被丢弃,并创建另一个连接来替换它。

【讨论】:

  • 感谢@rgettman (+1) - 所以这是我配置 Sybase(数据源)在返回连接之前运行的查询。我假设它会抛出一个我可以捕获的异常,或者返回一些我可以在应用程序端使用的错误值来确定连接不可用,并且我需要再试一次?再次感谢!
  • 还有一件事:那篇文章没有解释当连接不可用时会发生什么?抛出错误?
【解决方案2】:

它与JNDI无关,但与JDBC数据源有关。

验证查询用于验证来自数据源连接池的连接, 在这些被移交给客户之前。通常这些是低影响查询,例如 “SELECT 1...”或“SELECT SYSDATE...”

【讨论】:

  • 谢谢@orid (+1) - 请在 rgettman 的回答下查看我的问题 - 我有同样的问题要问你!
【解决方案3】:

我假设这是一个测试数据库连接是否正常工作的查询。应用服务器级别的某种 ping。

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

【讨论】:

  • 谢谢@Funtik (+1) - 请在 rgettman 的回答下查看我的问题 - 我有同样的问题要问你!
猜你喜欢
  • 2016-05-03
  • 2018-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 2012-05-27
  • 2010-11-22
  • 1970-01-01
相关资源
最近更新 更多