Использование c3p0.период простоя теста.

Я новичок в 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.тайм-аут?

2 ответов


сервер баз данных может закрыть соединение на своей стороне через определенное время, вызвав некоторую ошибку в вашем приложении, потому что он попытается отправить запрос на соединение, которое больше не доступно на стороне сервера.

чтобы избежать этого, вы можете позволить пулу периодически проверять соединение (подумайте о ping) для его действительности. Это idle_test_period для.

timeout - это период времени, после которого пул удалит соединение из пул, потому что соединение не было проверено (использовано) некоторое время, и пул содержит больше соединений, чем c3pO.min_size.


Я думаю, что этот параметр используется в спящем режиме для проверки объединенного соединения через каждые несколько секунд . Рассмотрим сценарий, если на стороне базы данных, пароль изменен. Hibernate уже объединил соединения по старому паролю. Таким образом, это нарушение безопасности, имеющее пул с неправильным паролем.Поэтому, когда hibernate будет проверять через несколько секунд . Это аннулирует это объединенное соединение.