Я использую Apache BasicDataSource для общего ресурса DBCP и пула соединений:
org.apache.commons.dbcp.BasicDataSource
и управляю им через Spring:
org.springframework.jdbc.datasource.DataSourceTransactionManager
При использовании этой комбинации с JDBC Teradataдрайвер, если моя база данных выходит из строя или возникает сбой в сети, я получаю следующую ошибку:
08S01 804: ошибка ввода-вывода, сокет закрыт.Ошибка записи потока пакетов
Это правильно отражает ситуацию, но проблема заключается в переподключении.Когда ошибка устраняется физически или БД возвращается в исходное состояние, и моя программа пытается запросить ее, я все равно получаю ту же ошибку в течение некоторого периода времени, который варьируется, например, 20 минут, часов, никогда.Проблема исчезает, когда я перезагружаю свою JVM или меняю строку подключения, например, использую IP-адрес вместо имени хоста.
Есть ли какие-либо настройки в DataSource или Spring Transaction Manager, которые могут это исправить?или может быть настройка TCP / IP?