【问题标题】:How do you set a validationQuery when using karaf + Ops4j jdbc + apache DBCP?使用 karaf + Ops4j jdbc + apache DBCP 时如何设置验证查询?
【发布时间】:2015-06-01 10:36:03
【问题描述】:

我在这里学习了教程:http://www.liquid-reality.de/display/liquid/2012/01/13/Apache+Karaf+Tutorial+Part+6+-+Database+Access,它解释了如何使用由 Ops4J JDBC 包装的 apache DBCP 在 Karaf 中设置数据源。

您可以使用“池”属性前缀在基础对象池上设置属性,但是我看不到设置“validationQuery”属性,可能是因为这不是基础池的属性,而是BasicDataSource 本身。我需要设置此属性,因为我在开发服务器上遇到连接超时,这有时会破坏我们的夜间集成测试。

这个可以吗?

【问题讨论】:

  • Pax jdbc 不使用 BasicDataSource 所以我不确定你是否可以设置这个参数。
  • 感谢您的回复。您是否知道等效的属性或解决问题的其他方法?我看过的大多数数据源(Hikari、BasicDataSource、C3PO)都有一种指定轻量级查询的方法,以便在将底层连接交给应用程序之前定期测试它们。

标签: java jdbc apache-karaf ops4j


【解决方案1】:

我找到了一种独立于 BasicDataSource 设置验证查询的方法。有org.apache.commons.dbcp2.PoolableConnectionFactory.setValidationQuery。

我们在 pax jdbc 内部使用 PoolableManagedConnectionFactory。目前无法设置此属性,但我添加了一个 jira 问题以添加此选项:https://ops4j1.jira.com/browse/PAXJDBC-70

【讨论】:

  • 这正是我所需要的。谢谢。期待下一个版本!
  • 我现在为此添加了代码并解决了上述问题。所以下一个版本应该有它。如果您能查看 pax-jdbc 源并针对您的情况构建/测试它,我将不胜感激。
  • 感谢您这么快。我已经检查、编译和测试,并且修复似乎有效。我已经调试了 karaf,并且可以看到验证查询已在工厂中正确设置。模拟空闲超时并不容易,但我相信一切都在您身边正常工作。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2011-06-26
  • 2012-04-12
  • 2012-05-27
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
相关资源
最近更新 更多