2012-04-16 8 views
13

Jestem nowy c3op i mylić o wykorzystanie:Korzystanie z c3p0.idle_test_period.

c3p0.idle_test_period 

w ten link: HowTo configure the C3P0 connection pool

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. 

Jaki jest cel tego rodzaju testu (idelanie połączenia Wyciągnięte) i związek między c3p0.idle_test_period a c3p0.timeout?

Odpowiedz

23

Serwer bazy danych może zamknąć połączenie po swojej stronie po pewnym czasie - powodując błąd w aplikacji, ponieważ będzie próbował wysłać zapytanie do połączenia, które nie jest już dostępne po stronie serwera.

Aby tego uniknąć, możesz pozwolić puli na okresowe sprawdzanie połączenia (myśl o pingowaniu), aby było ważne. Po to jest idle_test_period.

to czas, po którym pula usunie połączenie z puli, ponieważ połączenie nie zostało wyewidencjonowane (używane) przez pewien czas, a pula zawiera więcej połączeń niż c3pO.min_size.

+8

Należy pamiętać, że wartość hibernacji.c3p0.idle_test_period nie może nigdy przekraczać wartości hibernate.c3p0.timeout. W przeciwnym razie C3P0 nigdy nie wykryje połączeń, które zostały zamknięte. – MichaelCleverly

+0

@MichaelCleverly Przypuszczam, że w takim przypadku po prostu usunęłoby połączenia z puli, zamiast kiedykolwiek sprawdzać je pod kątem jakości życia ... warte poznania na pewno, ale niekoniecznie "nie może nigdy", jak mi się wydaje :) – rogerdpack

+0

Nieprawidłowe połączenie może się zdarzyć więcej powodów niż limit czasu bezczynności po stronie serwera - istnieją warstwy HA, które mogą wyzwolić je, gdy na przykład nastąpi przełączenie awaryjne. –

-1

Myślę, że to ustawienie jest używane w stanie hibernacji w celu sprawdzenia połączenia z puli po kilku sekundach. Rozważ scenariusz, jeśli po stronie bazy danych hasło zostanie zmienione. Hibernuj już połączone połączenia na starym haśle. Tak więc jest to naruszenie bezpieczeństwa, które ma pulę z nieprawidłowym hasłem. Tak więc, gdy hibernacja sprawdzi się po kilku sekundach. Spowoduje to unieważnienie tego połączonego połączenia.