Могу ли я установить время ожидания JDBC для одного запроса? - PullRequest
14 голосов
/ 22 марта 2011

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

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

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

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

Ответы [ 2 ]

27 голосов
/ 22 марта 2011

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

9 голосов
/ 23 марта 2011

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

...