Поскольку ни одна из операций JDBC не имеет концепции тайм-аута, целесообразно ли попытаться закрыть JDBC-соединение просроченной операции из другого потока, если тайм-аут превышен?
Мне известен метод Statement.cancel
, однако, похоже, он работает не во всех случаях. Кроме того, драйвер, который я использую, не отвечает на прерывания.
Я думаю, что Connection.close
, к сожалению, является наименьшим общим знаменателем, который можно использовать для предотвращения утечки ресурсов в случае, если операция базы данных была запущена.
Мне известно, что при использовании пула соединений мне приходится закрывать настоящий объект соединения.