14

我是 c3op 的新手,对以下内容的使用感到困惑:

c3p0.idle_test_period

在此链接中:如何配置 C3P0 连接池

idleTestPeriod :  Must be set in hibernate.cfg.xml (or hibernate.properties), Hibernate default:  
0, If this is a number greater than 0, c3p0 will test all idle, pooled but unchecked-out  
connections, every this number of seconds.

这种测试(idel,池化连接)的目的是什么,c3p0.idle_test_period和c3p0.timeout之间的关系是什么?

4

2 回答 2

28

数据库服务器可能会在一段时间后关闭其一侧的连接 - 导致您的应用程序出现一些错误,因为它会尝试在服务器端不再可用的连接上发送查询。

为了避免这种情况,您可以让池定期检查连接(想想 ping)的有效性。这是idle_test_period为了什么。

timeout是池将从池中删除连接的时间跨度,因为该连接有一段时间没有被签出(使用)并且池包含的连接多于c3pO.min_size.

于 2012-04-16T14:38:50.100 回答
1

我认为这个设置是在休眠中使用的,以便每隔几秒验证一次池连接。考虑一个场景,如果在数据库端,密码被更改。Hibernate 已经汇集了旧密码的连接。因此,使用错误密码的池是安全漏洞。所以当休眠时会在几秒钟后验证它。它将使该池连接无效。

于 2015-11-04T14:09:12.063 回答