ConnectionPool 세부 설정 기능 추가

main
semin.baek 6 months ago
parent 3ce7b79b7e
commit 47a627b17f

@ -5,7 +5,7 @@ plugins {
}
group = 'com.bsmlab.dfx'
version = '1.0.1'
version = '1.0.2'
// git commit hash -> application.yml
def gitCommitId = ''

@ -50,6 +50,10 @@
"url": "jdbc:cubrid:172.26.0.20:33000:amif:ami::",
"username": "ami",
"password": "fox12#$%",
"initialSize": 10,
"minIdle": 10,
"maxIdle": 30,
"maxTotal": 300,
"maximumRowForTransaction": 1000
}
],

@ -50,6 +50,10 @@
"url": "jdbc:cubrid:10.100.12.86:33000:amif:ami::",
"username": "ami",
"password": "fox12#$%",
"initialSize": 10,
"minIdle": 10,
"maxIdle": 30,
"maxTotal": 300,
"maximumRowForTransaction": 1000
}
],

@ -54,6 +54,10 @@
"url": "jdbc:oracle:thin:@mkami.foxsoft.kr:1521:xe",
"username": "ami",
"password": "fox12#$%",
"initialSize": 10,
"minIdle": 10,
"maxIdle": 30,
"maxTotal": 300,
"maximumRowForTransaction": 1000
}
],

@ -54,6 +54,10 @@
"url": "jdbc:oracle:thin:@10.100.2.56:21153/amidb",
"username": "ami",
"password": "AMI1!2@3#",
"initialSize": 10,
"minIdle": 10,
"maxIdle": 30,
"maxTotal": 300,
"maximumRowForTransaction": 1000
}
],

@ -49,6 +49,10 @@
"url": "jdbc:oracle:thin:@mkami.foxsoft.kr:1521:xe",
"username": "ami",
"password": "fox12#$%",
"initialSize": 10,
"minIdle": 10,
"maxIdle": 30,
"maxTotal": 300,
"maximumRowForTransaction": 1000
}
],

@ -40,6 +40,10 @@ public class AgentConfigDto {
private String url;
private String username;
private String password;
private int initialSize;
private int minIdle;
private int maxIdle;
private int maxTotal;
private int maximumRowForTransaction;
}

@ -113,7 +113,7 @@ public class DfxAgentConfiguration {
List<AgentConfigDto.DataSourceConfig> dataSourceConfigList = agentConfigReader.getAgentConfigDto().getDataSourceConfig();
for(AgentConfigDto.DataSourceConfig dataSourceConfig : dataSourceConfigList) {
try {
BasicDataSource dataSource = this.createBasicDataSource(dataSourceConfig);
BasicDataSource dataSource = DynamicDataSourceService.createBasicDataSource(dataSourceConfig);
SqlSessionFactoryBean sqlSessionFactoryBean = new RefreshableSqlSessionFactoryBean();//new SqlSessionFactoryBean();
org.apache.ibatis.session.Configuration mybatisConfiguration = new org.apache.ibatis.session.Configuration();
mybatisConfiguration.setJdbcTypeForNull(JdbcType.NULL);
@ -136,42 +136,6 @@ public class DfxAgentConfiguration {
return dynamicRoutingDataSource;
}
private static BasicDataSource createBasicDataSource(AgentConfigDto.DataSourceConfig dataSourceConfig) {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(dataSourceConfig.getDriverClassName());
dataSource.setUrl(dataSourceConfig.getUrl());
dataSource.setUsername(dataSourceConfig.getUsername());
dataSource.setPassword(dataSourceConfig.getPassword());
if(oracle.jdbc.driver.OracleDriver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
dataSource.setValidationQuery("SELECT 1 FROM DUAL");
}
else if(org.postgresql.Driver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
dataSource.setValidationQuery("SELECT 1");
}
else if(com.mysql.cj.jdbc.Driver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
dataSource.setValidationQuery("SELECT 1");
}
// else if(com.mysql.jdbc.Driver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
// dataSource.setValidationQuery("SELECT 1");
// }
else if(org.mariadb.jdbc.Driver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
dataSource.setValidationQuery("SELECT 1");
}
else if(com.ibm.db2.jcc.DB2Driver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
dataSource.setValidationQuery("SELECT 1 FROM SYSIBM.SYSDUMMY1");
}
dataSource.setTestOnBorrow(false);
dataSource.setTestOnReturn(false);
dataSource.setTestOnCreate(true);
dataSource.setTestWhileIdle(true);
dataSource.setInitialSize(3);
dataSource.setMinIdle(3);
dataSource.setMaxIdle(30);
dataSource.setMaxTotal(30);
return dataSource;
}
// 다중 데이터 소스와 그에 해당하는 sqlSession, transactionManager 설정
@Bean(name = "dynamicDataSourceService")
public DynamicDataSourceService dynamicDataSourceService() { // 실행확인됨

@ -1,6 +1,8 @@
package com.bsmlab.dfx.agent.config.datasource;
import com.bsmlab.dfx.agent.config.AgentConfigDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;
@ -14,6 +16,39 @@ public class DynamicDataSourceService {
private Map<String, SqlSessionFactory> sqlSessionFactoryMap = new HashMap<>();
private Map<String, DataSourceTransactionManager> transactionManagerMap = new HashMap<>();
public static BasicDataSource createBasicDataSource(AgentConfigDto.DataSourceConfig dataSourceConfig) {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(dataSourceConfig.getDriverClassName());
dataSource.setUrl(dataSourceConfig.getUrl());
dataSource.setUsername(dataSourceConfig.getUsername());
dataSource.setPassword(dataSourceConfig.getPassword());
if(oracle.jdbc.driver.OracleDriver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
dataSource.setValidationQuery("SELECT 1 FROM DUAL");
}
else if(org.postgresql.Driver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
dataSource.setValidationQuery("SELECT 1");
}
else if(com.mysql.cj.jdbc.Driver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
dataSource.setValidationQuery("SELECT 1");
}
else if(org.mariadb.jdbc.Driver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
dataSource.setValidationQuery("SELECT 1");
}
else if(com.ibm.db2.jcc.DB2Driver.class.getCanonicalName().equals(dataSourceConfig.getDriverClassName())) {
dataSource.setValidationQuery("SELECT 1 FROM SYSIBM.SYSDUMMY1");
}
dataSource.setTestOnBorrow(true);
dataSource.setTestOnReturn(true);
dataSource.setTestOnCreate(true);
dataSource.setTestWhileIdle(true);
dataSource.setInitialSize(dataSourceConfig.getInitialSize());
dataSource.setMinIdle(dataSourceConfig.getMinIdle());
dataSource.setMaxIdle(dataSourceConfig.getMaxIdle());
dataSource.setMaxTotal(dataSourceConfig.getMaxTotal());
return dataSource;
}
public SqlSessionFactory getSqlSessionFactory(String dataSourceId) {
return this.sqlSessionFactoryMap.get(dataSourceId);
}

Loading…
Cancel
Save