Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用c3p0.idle_测试_周期。_Java_Hibernate_C3p0 - Fatal编程技术网

Java 使用c3p0.idle_测试_周期。

Java 使用c3p0.idle_测试_周期。,java,hibernate,c3p0,Java,Hibernate,C3p0,我是c3op新手,对以下各项的使用感到困惑: c3p0.idle_test_period 在此链接中: 这类测试(idel,池连接)的目的是什么,以及c3p0.idle\u test\u period和c3p0.timeout之间的关系?数据库服务器可能会在一段时间后关闭其一侧的连接,从而导致应用程序中出现一些错误,因为它将尝试在服务器端不再可用的连接上发送查询 为了避免这种情况,您可以让池定期检查连接(比如ping)的有效性。这就是idle\u test\u period的作用 timeou

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

c3p0.idle_test_period
在此链接中:


这类测试(idel,池连接)的目的是什么,以及c3p0.idle\u test\u period和c3p0.timeout之间的关系?

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

为了避免这种情况,您可以让池定期检查连接(比如ping)的有效性。这就是
idle\u test\u period
的作用


timeout
是池将从池中删除连接的时间跨度,因为连接有一段时间未签出(使用),并且池中包含的连接数超过
c3pO.min\u size

我认为在hibernate中使用此设置是为了每隔几秒钟验证池连接。考虑一个场景,如果在数据库方面,密码被更改。Hibernate已使用旧密码共享连接。所以,使用错误密码的池是安全漏洞。所以,当hibernate在几秒钟后验证时,它会被删除。它将使池连接无效。

请记住,hibernate.c3p0.idle\u test\u period值决不能超过hibernate.c3p0.timeout的值。否则C3P0将永远不会检测到已关闭的连接。@MichaelCleverly我想在这种情况下,它只会从池中删除连接,而不会检查它们的活动性……确实值得认识,但不一定是“绝对不能”me认为:)发生连接故障的原因可能不止服务器端空闲超时——例如,当发生故障转移时,有HA层可以触发连接故障。我不明白为什么这个答案值得否决。虽然答案与所问问题无关,但完全正确
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.