У меня есть веб-приложение Java-JSF на GlassFish, в котором я хочу использовать пул соединений. Поэтому я создал application
scoped bean, который обслуживает экземпляры Connection
для других beans:
public class DatabaseBean {
private DataSource myDataSource;
public DatabaseBean() {
try {
Context ctx = new InitialContext();
ecwinsDataSource = (DataSource) ctx.lookup("jdbc/myDataSource");
} catch (NamingException ex) {
ex.printStackTrace();
}
}
public Connection getConnection() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
Connection connection = myDataSource.getConnection();
System.out.println("Succesfully connected: " + connection);
//Sample: Succesfully connected: [email protected]
return connection;
}
}
Таким образом, пул соединений заполняется очень быстро; после нескольких переходов через "связанные с db" представления приложение останавливается со следующим:
RAR5117: Не удалось получить/создать соединение из пула соединений [mysql_testPool]. Причина. Используемые соединения равны максимальному размеру пула и истекшему максимальному времени ожидания. Невозможно выделить больше соединений. RAR5114: Ошибка выделения соединения: [Ошибка при распределении соединения. Причина. Используемые соединения равны максимальному размеру пула и истечению максимального времени ожидания. Невозможно выделить больше соединений.] Java.sql.SQLException: ошибка при распределении соединения. Причина. Используемые соединения равны максимальному размеру пула и истечению максимального времени ожидания. Невозможно выделить больше соединений.
Я закрываю соединения и другие ресурсы в каждом методе. Приложение работает со всеми автономными соединениями.
Что я делаю неправильно? Любые советы или рекомендации будут оценены.