Почему jdbc соединение отсоединяется в некоторое время само собой

101
09 марта 2022, 01:10

Использую java и jdbc для установки соединения с базой данных.

Почему соединение отсоединяется в некоторое время само собой. Например программа соединяется к базе, работает отлично но если устройство не используется некоторое время то отсоединяется из базы. Пожалуйста напишите в чем проблема.

Answer 1

Это штатное поведение JDBC соединения. Коннект с БД достаточно ресурсоемкий и ценный и просто так бронировать его надолго неразумно. Поэтому через какое-то время в случае неактивности клиента - коннект разрывается.

Начиная с JDBC 4.1 имеется новый метод Connection.setNetworkTimeout() в котором можно устанавливать время бездействия. В старых версиях это зависит от конкретного вендора СУБД/JDBC

P.S. Подучите немного русский - а то прямо глаза режет.

Answer 2

Сервер базы данных может сам закрывать соединения, если они не используются. Поддерживать соединения для сервера не представляется возможным, поскольку он не может управлять клиентами, которые устанавливают эти соединения. Поэтому соединения закрываются независимо от того что вы используете для соединения jdbc, odbc, etc.

Для того чтобы поддерживать связь с сервером базы данных, клиент должен проверять наличие соединения, и в случае его отсутствия создавать новое. Можно написать метод, который возвращает только валидный объект Connection.

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

Можно также воспользоваться библиотеками, которые позволяют управлять соединениями клиентов используя пулы соединений. Среди таких библиотек можно отметить dbcp, c3p0, и т.д.

Можно воспользоваться примером создания соединений используя известные пулы соединений.

READ ALSO
Почему возникают проблемы с буфером обмена, если java запущена как сервис?

Почему возникают проблемы с буфером обмена, если java запущена как сервис?

Javafx приложение запущено в Windows с наивысшими правами от имени пользователя System (как сервис) на рабочем столе одного из обычных пользователейНаблюдаю...

96
Генерация слова и смешение букв в нем (Java)

Генерация слова и смешение букв в нем (Java)

Друзья, встал в жесткий тупикНе понимаю - я где-то туплю или чего-то не понимаю

90
Локальный минимум в списке

Локальный минимум в списке

Задача заключается в следующем:

86
Зачем создавать интерфейсы для классов с единственной реализацией

Зачем создавать интерфейсы для классов с единственной реализацией

С таким я столкнулся еще когда впервые узнал про DAO-слой, где один парень настойчиво рекомендовал не делать конкретную реализацию, а программировать...

82