Могу ли я установить тайм-аут JDBC для одного запроса?

У меня есть веб-приложение на Tomcat, которое обрабатывает пул соединений с БД и использует Spring JDBCTemplate для выполнения запросов. Меня попросили реализовать страницу состояния, которая будет контролироваться процессом пульса, чтобы определить, все ли в порядке с сервером.

В рамках этого я хочу сделать запрос к БД, чтобы определить, в порядке ли подключение к базе данных. В идеале, поскольку это будет просто «выбрать 1 из», я бы хотел, чтобы он возвращался быстро, в течение 10 секунд, чтобы указать на сбой, если БД не ответила за это время.

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

Есть ли способ установить время ожидания для каждого запроса с помощью необработанных оболочек JDBC или Spring JDBC?


person Shawn D.    schedule 22.03.2011    source источник
comment
Для такого сценария я предлагаю установить его на 1 или 2 секунды, что будет указывать на перегрузку базы данных.   -  person cherouvim    schedule 23.03.2011


Ответы (2)


Если вы используете Spring для управления транзакциями, время ожидания также может быть указано на уровне транзакции. @ Транзакционный (время ожидания = 10)

person gkamal    schedule 23.03.2011

Используйте setQueryTimeout для объекта Statement (или PreparedStatement).

person Tom Micheline    schedule 22.03.2011