2013-03-13 23 views
5

Wydaje mi się, że mam ten sam dokładny problem co plakat z plakatu this original SO question.Co to jest sprawdzanie poprawności w odniesieniu do baz danych i JNDI?

Problem polega na tym, że odpowiedział na własne pytanie z następującym komentarzem:

mi rozwiązać mój problem dodałem validationQuery do mojego JNDI źródła danych.

Niestety, to nic dla mnie nie znaczy i nie pomaga mi rozwiązać mojego problemu. Pytam więc: co to jest "validationQuery" w odniesieniu do mojej bazy danych (Sybase) i wpisu JNDI używanego do przechowywania informacji o wyszukiwaniu serwera?

Z góry dziękuję.

+0

Czy to jest [tag: sybase-asa], [tag: sybase-ase], [tag: sybase-iq], czy [tag: sqlanywhere]? Próbuję oczyścić tag [tag: sybase] ... –

Odpowiedz

8

Zapytanie walidacja jest kwerenda prowadzony przez źródło danych, aby potwierdzić, że Connection jest nadal otwarta przed wpuszczeniem go . Oto Tomcat's definition of a validation query; przewiń w dół do połowy sekcji "4. Skonfiguruj fabrykę zasobów Tomcat", szukając atrybutu "validationQuery".

EDIT

Według this answer, jeśli zapytanie walidacja nie powiedzie, zostanie zgłoszony błąd; połączenie zepsute/zamknięte zostało zerwane i tworzone jest inne połączenie w celu jego zastąpienia.

+0

Dzięki @rgettman (+1) - więc jest to zapytanie, które konfiguruję Sybase (źródło danych) do uruchomienia przed zwróceniem połączenia. Zakładam, że zgłasza wyjątek, który mogę złapać, lub zwraca pewną wartość błędu, której mogę użyć po stronie aplikacji, aby ustalić, że połączenie nie jest dostępne i czy muszę spróbować ponownie? Dzięki jeszcze raz! – IAmYourFaja

+0

I jeszcze jedno: ten artykuł nie wyjaśnia, co dzieje się, gdy połączenie nie jest dostępne? Zgłasza błąd? – IAmYourFaja

+0

Edytowałem swoją odpowiedź. – rgettman

1

Zakładam, że jest to zapytanie sprawdzające, czy połączenie DB działa poprawnie. Pewien rodzaj pingowania na poziomie aplikacji.

W oryginalnym pytaniu okresowe pingowanie DB powoduje, że połączenie jest otwarte.

+0

Dzięki @Funtik (+1) - zobacz moje pytanie pod odpowiedzią rgettmana - mam dla ciebie takie samo pytanie! – IAmYourFaja

2

Nie ma znaczenia dla JNDI, ale źródła danych JDBC.

Kwerenda sprawdzania poprawności służy do sprawdzania poprawności połączeń z puli połączeń źródła danych, , zanim zostaną one przekazane klientom. Zazwyczaj są to niskie zapytanie wpływ takich jak „wybierz 1 ...” lub „SELECT sysdate ...”

+0

Dzięki @orid (+1) - zobacz moje pytanie pod odpowiedzią rgettmana - mam dla ciebie to samo pytanie! – IAmYourFaja