在Apache Commons Pool 2

时间:2017-08-09 10:11:09

标签: java apache-commons-pool

我正在使用Apache Commons Pool 2,我已将配置testWhileIdle设置为true,这意味着Pool框架将检查它们是否有效的空闲对象。

我会问这种检查是否定期发生,如果是,默认间隔是什么,以及我如何更改它。

我之所以这样问,是因为池中的对象应该定期连接到服务器以保持活跃,我认为池validateObject方法是实现此目的的好地方。

Per @ user7294900的评论,有两个配置参数:

  1. timeBetweenEvictionRunsMillis,默认值为-1
  2. minEvictableIdleTimeMillis,默认值为1800 * 60 * 30
  3. 我有两个问题:

    1. 这两个参数之间有什么区别?
    2. 我将它们都设置为5000,并且池中有8个对象,我在PooledObjectFactory的validateObject方法中打印对象的哈希码,我发现只有3个对象&# 39;哈希代码已经打印出来,然后再没有打印消息,看起来{5}每隔5秒没有调用validateObject或者validateObject的调用被卡住了吗?
    3. 我发现了问题,请参阅评论

1 个答案:

答案 0 :(得分:1)

您可以使用\ update newList更改空闲验证时间,请参阅Tomcat JDBC Connection Pool

  

timeBetweenEvictionRunsMillis(int)到的毫秒数   在空闲连接验证/清除线程的运行之间休眠。   该值不应设置为1秒以下。它决定了我们的频率   检查空闲,放弃连接以及我们验证空闲的频率   连接。默认值为5000(5秒)。