switched from dbcp2 to c3p0 pooling. updating libraries

This commit is contained in:
Isaac Parenteau
2019-12-30 21:32:32 -06:00
parent fd3c942164
commit 6ec37452f9
2 changed files with 31 additions and 59 deletions

View File

@ -36,15 +36,7 @@ import java.util.stream.Collectors;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.ConnectionFactory;
import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
import org.apache.commons.dbcp2.PoolableConnection;
import org.apache.commons.dbcp2.PoolableConnectionFactory;
import org.apache.commons.dbcp2.PoolingDataSource;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.pool2.impl.AbandonedConfig;
import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.mariadb.jdbc.MariaDbDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -52,7 +44,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import net.locusworks.discord.eighttrack.services.ConfigurationService;
@Primary
@ -104,8 +96,7 @@ public class EightTrackDataSource {
}
private DataSource getDataSource(Boolean isFlyway) throws Exception {
logger.debug("Gettind datasource");
Class.forName(DRIVER).getDeclaredConstructor().newInstance();
logger.debug("Getting datasource");
String user = confService.getDatabaseUsername();
String passwd = confService.getDatabasePassword();
@ -129,34 +120,16 @@ public class EightTrackDataSource {
logger.debug("Database connection string: %s", url);
ConnectionFactory cf = new DriverManagerConnectionFactory(url, props);
//Create the poolable connection factory
PoolableConnectionFactory pcf = new PoolableConnectionFactory(cf, null);
pcf.setValidationQuery("SELECT 1");
pcf.setDefaultAutoCommit(true);
GenericObjectPoolConfig<PoolableConnection> poolConfig = new GenericObjectPoolConfig<>();
poolConfig.setMinIdle(10);
poolConfig.setMaxTotal(100);
AbandonedConfig abandonConfig = new AbandonedConfig();
abandonConfig.setRemoveAbandonedTimeout(60);
abandonConfig.setLogAbandoned(false);
abandonConfig.setRemoveAbandonedOnBorrow(true);
abandonConfig.setRemoveAbandonedOnMaintenance(true);
//Create the pool of connections
GenericObjectPool<PoolableConnection> connectionPool = new GenericObjectPool<>(pcf, poolConfig);
connectionPool.setTestOnBorrow(true);
connectionPool.setTestWhileIdle(true);
connectionPool.setTimeBetweenEvictionRunsMillis(10000);
connectionPool.setMinEvictableIdleTimeMillis(1000);
connectionPool.setAbandonedConfig(abandonConfig);
pcf.setPool(connectionPool);
//Pooling data source itself
PoolingDataSource<PoolableConnection> dataSource = new PoolingDataSource<>(connectionPool);
return dataSource;
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass(DRIVER);
cpds.setJdbcUrl(url);
cpds.setUser(user);
cpds.setPassword(passwd);
cpds.setMinPoolSize(5);
cpds.setMaxPoolSize(100);
cpds.setAcquireIncrement(10);
return cpds;
}
}