Отпустите открытое соединение в Java 8

У меня есть приложение на основе JSP/Servlet, команда базы данных жалуется на увеличение количества открытых соединений с базой данных. Я подозреваю, что соединение не закрывается после использования.

Я хочу внести некоторые изменения в код, инициализировав строку подключения в блоке try catch, как это предлагается в Java 8.

Я попытался закрыть соединение в финальном блоке, который отлично работает.

вот код, который я хочу реализовать. Устранит ли это проблему? Есть ли другой способ закрыть открытые соединения после использования с небольшим изменением кода?

   try(Connection con =  DBConnectivity.openConnectionThread(); 
   PreparedStatement ps1 = con.prepareStatement(sql1)) {
   -----
     ------
    }

person BipinSasi    schedule 18.07.2019    source источник
comment
Это ЕДИНСТВЕННОЕ МЕСТО в вашем коде, где вы получаете доступ к базе данных? Вы не используете db в другой части приложения?   -  person zaerymoghaddam    schedule 18.07.2019
comment
Возможный дубликат Try / Try-with-resources и Connection , Заявление и закрытие ResultSet   -  person Rowi    schedule 18.07.2019
comment
Нет, есть несколько мест, где инициализируется соединение. Я использую пул соединений public static final ThreadLocal‹Connection› connectionThread = new ThreadLocal‹Connection›();   -  person BipinSasi    schedule 18.07.2019
comment
@BipinSasi Это неправильный способ объединения соединений и может легко привести к утечке соединений.   -  person Mark Rotteveel    schedule 18.07.2019


Ответы (1)


Вам также следует закрыть PreparedStatement.

try(Connection con =  DBConnectivity.openConnectionThread();
     PreparedStatement ps1 = con.prepareStatement(sql1)) 
    {
   -----
     ------
    }
person user7294900    schedule 18.07.2019