2011-03-22 9 views
13

Tengo una aplicación web en Tomcat, que maneja la agrupación de conexiones de base de datos, y utiliza Spring JDBCTemplate para ejecutar consultas. Se me ha pedido que implemente una página de estado que será monitoreada por un proceso de latido para determinar si todo está bien con el servidor.¿Puedo establecer un tiempo de espera JDBC para una sola consulta?

Como parte de esto, quiero hacer una consulta DB para determinar si la conexión a la base de datos está bien. Idealmente, dado que solo sería un 'seleccionar 1 desde', me gustaría que vuelva rápidamente, en 10 segundos, para indicar una falla si el DB no respondió en ese momento.

Sin embargo, no quiero cambiar mi conexión a tiempo de espera tan rápido para las solicitudes normales.

¿Hay alguna forma de establecer un tiempo de espera por consulta utilizando envoltorios JDBC o Spring JDBC sin formato?

+0

Para ese tipo de scrapy, sugiero configurarlo en 1 o 2 segundos, lo que indicará la congestión de la base de datos. – cherouvim

Respuesta

9

Si está utilizando la primavera para administrar las transacciones, también se puede especificar un tiempo de espera en el nivel de transacción. @Transactional (timeout = 10)

+0

Gracias, intentaré eso. –

22

Use setQueryTimeout en el objeto Statement (o PreparedStatement).

Cuestiones relacionadas