2009-03-30 7 views
7

Źródło danych Oracle przekazuje połączenie zerowe, gdy liczba żądań połączenia jest większa. Mam włączone implicite cache. Specyfikacja oracle mówi, że zwracana jest tylko wartość null, ustawiono ConnectionWaitTimeout. Nie mam wartości ustawionej dla ConnectionWaitTimeout we właściwościach pamięci podręcznej.Oracle Datasource zwraca połączenie null

To co spec mówi o

ConnectionWaitTimeout

Określa zachowanie pamięci podręcznej, gdy połączenie jest wymagane i nie są już MaxLimit połączenia aktywne. Jeśli wartość ConnectionWaitTimeout jest większa od zera, każde żądanie połączenia czeka na określoną liczbę sekund lub do momentu przywrócenia połączenia do pamięci podręcznej. Jeśli żadne połączenie nie zostanie zwrócone do pamięci podręcznej przed upływem limitu czasu, żądanie połączenia zwróci wartość null.

domyślna: 0 (bez limitu czasu)

Jakie są inne possiblies gdzie DataSource może powrócić null połączenie?

Odpowiedz

2

Myślę, że wartość domyślna może się różnić w zależności od wersji Oracle, z której korzystasz. Niektóre informacje są sprzeczne, np. Wyrocznie "Optimizing Connection Pool Behavior" oznacza, że ​​domyślnie jest to 3 sekundy (11g?), Inne źródła podają, że jest zero, jak wspomniano w pytaniu.

Proponuję jednoznacznie ustawić go na zero i sprawdzić, czy zachowanie nadal się manifestuje.

0

Próbowałem ustawić tę wartość. Chociaż dokumenty mówią, że domyślnie nie ma limitu czasu, gdy nie ustawiłem tej właściwości, źródło danych zwracało wartość null. Kiedy wyraźnie określiłem wartość, na którą czekało połączenie, nawet wartość do 0 dawała mi zerowe połączenie.