diff --git a/build.gradle b/build.gradle index 7fab7ad..f95d82d 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group = 'com.bsmlab.dfx' -version = '1.0.1' +version = '1.0.2' // git commit hash -> application.yml def gitCommitId = '' diff --git a/src/docs/settings-examples/dfxagent-ami-dev.json b/src/docs/settings-examples/dfxagent-ami-dev.json index e13324f..63ef10e 100644 --- a/src/docs/settings-examples/dfxagent-ami-dev.json +++ b/src/docs/settings-examples/dfxagent-ami-dev.json @@ -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 } ], diff --git a/src/docs/settings-examples/dfxagent-ami-oper.json b/src/docs/settings-examples/dfxagent-ami-oper.json index 520d639..ee73e97 100644 --- a/src/docs/settings-examples/dfxagent-ami-oper.json +++ b/src/docs/settings-examples/dfxagent-ami-oper.json @@ -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 } ], diff --git a/src/docs/settings-examples/dfxagent-mkami-dev.json b/src/docs/settings-examples/dfxagent-mkami-dev.json index a37f546..b4852b2 100644 --- a/src/docs/settings-examples/dfxagent-mkami-dev.json +++ b/src/docs/settings-examples/dfxagent-mkami-dev.json @@ -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 } ], diff --git a/src/docs/settings-examples/dfxagent-mkami-oper.json b/src/docs/settings-examples/dfxagent-mkami-oper.json index a6baa52..58d181f 100644 --- a/src/docs/settings-examples/dfxagent-mkami-oper.json +++ b/src/docs/settings-examples/dfxagent-mkami-oper.json @@ -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 } ], diff --git a/src/docs/settings-examples/dfxagent.json b/src/docs/settings-examples/dfxagent.json index 4e961a5..4af4272 100644 --- a/src/docs/settings-examples/dfxagent.json +++ b/src/docs/settings-examples/dfxagent.json @@ -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 } ], diff --git a/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java b/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java index 7248aa0..b07b4d2 100644 --- a/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java +++ b/src/main/java/com/bsmlab/dfx/agent/config/AgentConfigDto.java @@ -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; } diff --git a/src/main/java/com/bsmlab/dfx/agent/config/DfxAgentConfiguration.java b/src/main/java/com/bsmlab/dfx/agent/config/DfxAgentConfiguration.java index 29d09bb..c07f76a 100644 --- a/src/main/java/com/bsmlab/dfx/agent/config/DfxAgentConfiguration.java +++ b/src/main/java/com/bsmlab/dfx/agent/config/DfxAgentConfiguration.java @@ -113,7 +113,7 @@ public class DfxAgentConfiguration { List 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() { // 실행확인됨 diff --git a/src/main/java/com/bsmlab/dfx/agent/config/datasource/DynamicDataSourceService.java b/src/main/java/com/bsmlab/dfx/agent/config/datasource/DynamicDataSourceService.java index 628cbcd..35fea78 100644 --- a/src/main/java/com/bsmlab/dfx/agent/config/datasource/DynamicDataSourceService.java +++ b/src/main/java/com/bsmlab/dfx/agent/config/datasource/DynamicDataSourceService.java @@ -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 sqlSessionFactoryMap = new HashMap<>(); private Map 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); }