我有一个应用程序,用户可以选择任何类型的数据库(关系型)提供URL,用户名,密码并创建连接到数据库的数据源,然后运行SELECT查询。为了连接数据库,我在连接池中使用了HikariCp(在我使用DBCP2之前,因为连接超时无法正常工作,所以我改为了HikariCp)。这是我的配置
HikariConfig config = new HikariConfig();
config.setDriverClassName(StringUtils.trimToEmpty(driver));
config.setJdbcUrl(StringUtils.trimToEmpty(url));
config.setUsername(username);
config.setPassword(password);
config.setMaximumPoolSize(100);
config.setMinimumIdle(3);
config.setConnectionTestQuery(validationQuery);
config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(jdbcTimeout));
config.setIdleTimeout(TimeUnit.MINUTES.toMillis(10));
config.setMaxLifetime(TimeUnit.MINUTES.toMillis(11));
config.addDataSourceProperty("closeMethod", "close");
HikariDataSource dataSource = new HikariDataSource(config);
Connection connection = dataSource.getConnection();
jdbcTimeout-是可配置的,它可以是0 -30
运行测试,该测试使用应用程序创建查询并运行那些查询,一段时间后,我收到一个错误,提示客户过多。
我应该添加哪些属性以将废弃的连接返回到池中?