Отключение всех соединений в пуле
Использую com.mchange.v2.c3p0.ComboPooledDataSource, установлено максимальное количество соединений - 60. Изначально было меньше, но увеличение не помогает решению проблемы. Все параметры указаны, но когда количество соединений резко доходит до 60, к примеру за одну минуту, после этого они остаются занятыми и не освобождаются, новые также не создаются. Вопрос в том, как можно сделать так, чтобы, если достигнуто 60 соединений, он хотя бы закрывал те соединения, которым уже 30 секунд. Я использую
if(cpds.getNumUnclosedOrphanedConnections() == 59){
cpds.softResetAllUsers();
}
но он слишком жестко работает, закрывает все соединения
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass(driverClassName); // Класс драйвера базы
cpds.setJdbcUrl(url); // JDBC - урл
cpds.setUser(username); // Пользователь
cpds.setPassword(password); // Пароль
cpds.setMaxPoolSize(maxPoolSize); // Максимальный размер пула
cpds.setInitialPoolSize(3); // Размер пула при инициализации
cpds.setMinPoolSize(3); // Минимальный размер пула
cpds.setPreferredTestQuery("SELECT 1 FROM DUAL"); // Запрос для теста соединения
cpds.setIdleConnectionTestPeriod(60); // Период проверки ожидающих соединений (сек.)
cpds.setMaxIdleTime(20 * 60); // Таймаут ожидающего соединения (сек.)
cpds.setUnreturnedConnectionTimeout(5 * 60); // Таймаут соединения, которое не было возвращено в пул (сек.)
cpds.setMaxIdleTimeExcessConnections(30 * 60); // Промежуток времени в течение которого проверяется пул,
// и сокращается кол-во соединений в нем в случае неиспользования их (сек.)