Я использую соединение JDBC-соединения на веб-сервере из морской рыбы. Я инъекции DataSource с помощью этого заявления:Glassfish не используется повторно JDBC-соединения
@Resource(lookup="database")
DataSource db;
код, который я использую для загрузки данных выглядит примерно так:
public ArrayList<Stuff> loadStuff()throws SQLException{
PreparedStatement ps = db.getConnection().prepareStatement("Select * from stufftable");
ResultSet rs = ps.executeQuery();
ArrayList<Stuff> stuffs= new ArrayList<Stuff>();
if(rs.next()){
Stuff stuff = new Stuff();
stuff.setString1(rs.getString("string1"));
stuff.setString1(rs.getString("string1"));
stuffs.add(stuff);
}
return stuffs;
}
По какой-то причине GlassFish не повторное использование соединений с базой данных, поэтому Я быстро убегаю от них. Рано или поздно я всегда получаю эту ошибку: Error in allocating a connection. Cause: In-use connections equal max-pool-size and expired max-wait-time. Cannot allocate more connections.
Как я понял концепцию объединения на GlassFish: Я не должен закрывать соединение, после того, как я использовал их, так что-то еще может повторно использовать соединение при необходимости. Glassfish закрывает соединение, когда больше нет требования к соединению.
Почему моя программа открывает новое соединение каждый раз? Должен ли я что-то делать с соединением, когда я закончил?
Пытается-с-ресурсы автоматически закрывает соединение, когда его сделали? Закрывает ли он ресурс также, когда генерируется исключение, и оно должно прерываться? – Kendoha
Дополнительный вопрос: я пытался прочитать об этом, и, судя по всему, есть вещь, которая называется «Подавленные исключения», которые я действительно не получаю. Есть ли исключения в этих попытках? – Kendoha