Tomcat DataSource - максимальное количество активных подключений
Я установил максимальное количество активных подключений на 1, используя следующий код:
ConnectionPool initializePool(DataSource dataSource) {
if (!(org.apache.tomcat.jdbc.pool.DataSource.class.isInstance(dataSource))) {
return null;
}
org.apache.tomcat.jdbc.pool.DataSource tomcatDataSource = (org.apache.tomcat.jdbc.pool.DataSource) dataSource;
final String poolName = tomcatDataSource.getName();
try {
ConnectionPool pool = tomcatDataSource.createPool();
pool.getPoolProperties().setMaxActive(1);
pool.getPoolProperties().setInitialSize(1);
pool.getPoolProperties().setTestOnBorrow(true);
return pool;
} catch (SQLException e) {
logger.info(String.format(" !--! creation of pool failed for %s", poolName), e);
}
return null;
}
Теперь, используя потоки, я открыл количество одновременных подключений к БД. Я также распечатал текущее количество активных соединений, используя приведенный ниже код
System.out.println("Current Active Connections = " + ((org.apache.tomcat.jdbc.pool.DataSource) datasource).getActive());
System.out.println("Max Active Connections = " + ((org.apache.tomcat.jdbc.pool.DataSource) datasource).getMaxActive());
Я вижу результаты, похожие на ниже. Количество активных подключений отображается как 1. Однако я хочу ограничить максимальное количество активных подключений до 1. Есть ли какие-либо другие параметры, которые мне нужно установить?
Текущие активные соединения = 9
Максимальное количество активных подключений = 1
РЕДАКТИРОВАТЬ: Однако, когда я пытаюсь с 15 или 20 в качестве максимального активного, он всегда ограничен 15 или 20 соответственно.
1 ответ
Попробуйте с maxIdle и minIdle
ConnectionPool pool = tomcatDataSource.createPool();
pool.getPoolProperties().setMaxActive(1);
pool.getPoolProperties().setInitialSize(1);
pool.getPoolProperties().setMaxIdle(1);
pool.getPoolProperties().setMinIdle(1);
pool.getPoolProperties().setTestOnBorrow(true);