From e4d768249666675da88c4e7b03a649863c2714ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=B2=E4=B8=96=E4=BC=9F?= Date: Mon, 25 May 2020 19:34:11 +0800 Subject: [PATCH 1/4] ceshi --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index abdcc067..45836252 100644 --- a/pom.xml +++ b/pom.xml @@ -9,6 +9,7 @@ 3.2.0-SNAPSHOT jar + jboot http://jboot.io Jboot is a similar SpringCloud project base on JFinal, Dubbo and Undertow. -- Gitee From 937cc3bc230a2aad718e5d8dafceedb301169a88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=B2=E4=B8=96=E4=BC=9F?= Date: Mon, 25 May 2020 19:38:22 +0800 Subject: [PATCH 2/4] ceshi --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 45836252..abdcc067 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,6 @@ 3.2.0-SNAPSHOT jar - jboot http://jboot.io Jboot is a similar SpringCloud project base on JFinal, Dubbo and Undertow. -- Gitee From 64750f10b14e55f88dd84faeed841480353ff155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=B2=E4=B8=96=E4=BC=9F?= Date: Tue, 26 May 2020 16:47:39 +0800 Subject: [PATCH 3/4] =?UTF-8?q?druid=20=E6=95=B0=E6=8D=AE=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jboot/db/datasource/DataSourceConfig.java | 88 +++++++++++++++++++ .../db/datasource/DruidDataSourceFactory.java | 9 +- 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/jboot/db/datasource/DataSourceConfig.java b/src/main/java/io/jboot/db/datasource/DataSourceConfig.java index 8c0b4e12..efe9f40a 100644 --- a/src/main/java/io/jboot/db/datasource/DataSourceConfig.java +++ b/src/main/java/io/jboot/db/datasource/DataSourceConfig.java @@ -15,6 +15,7 @@ */ package io.jboot.db.datasource; +import com.alibaba.druid.pool.DruidDataSource; import com.jfinal.plugin.activerecord.DbKit; import io.jboot.utils.StrUtil; @@ -46,6 +47,20 @@ public class DataSourceConfig { private Long idleTimeout; private Integer minimumIdle = 0; + // 配置获取连接等待超时的时间 + private long maxWait = DruidDataSource.DEFAULT_MAX_WAIT; + + // 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + private long timeBetweenEvictionRunsMillis = DruidDataSource.DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS; + // 配置连接在池中最小生存的时间 + private long minEvictableIdleTimeMillis = DruidDataSource.DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS; + // 配置发生错误时多久重连 + private long timeBetweenConnectErrorMillis = DruidDataSource.DEFAULT_TIME_BETWEEN_CONNECT_ERROR_MILLIS; + private String validationQuery = "select 1"; + private boolean testWhileIdle = true; + private boolean testOnBorrow = false; + private boolean testOnReturn = false; + private String sqlTemplatePath; private String sqlTemplate; private String factory; //HikariDataSourceFactory.class.getName(); @@ -310,4 +325,77 @@ public class DataSourceConfig { public void setActiveRecordPluginClass(String activeRecordPluginClass) { this.activeRecordPluginClass = activeRecordPluginClass; } + + public long getMaxWait() { + return maxWait; + } + + public void setMaxWait(long maxWait) { + this.maxWait = maxWait; + } + + public long getTimeBetweenEvictionRunsMillis() { + return timeBetweenEvictionRunsMillis; + } + + public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) { + this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; + } + + public long getMinEvictableIdleTimeMillis() { + return minEvictableIdleTimeMillis; + } + + public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) { + this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; + } + + public long getTimeBetweenConnectErrorMillis() { + return timeBetweenConnectErrorMillis; + } + + public void setTimeBetweenConnectErrorMillis(long timeBetweenConnectErrorMillis) { + this.timeBetweenConnectErrorMillis = timeBetweenConnectErrorMillis; + } + + public String getValidationQuery() { + if(this.url.startsWith("jdbc:oracle")){ + return "select 1 from dual"; + }else if(this.url.startsWith("jdbc:db2")){ + return "select 1 from sysibm.sysdummy1"; + }else if(this.url.startsWith("jdbc:hsqldb")){ + return "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"; + }else if(this.url.startsWith("jdbc:derby")){ + return "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"; + } + return "select 1"; + } + + public void setValidationQuery(String validationQuery) { + this.validationQuery = validationQuery; + } + + public boolean isTestWhileIdle() { + return testWhileIdle; + } + + public void setTestWhileIdle(boolean testWhileIdle) { + this.testWhileIdle = testWhileIdle; + } + + public boolean isTestOnBorrow() { + return testOnBorrow; + } + + public void setTestOnBorrow(boolean testOnBorrow) { + this.testOnBorrow = testOnBorrow; + } + + public boolean isTestOnReturn() { + return testOnReturn; + } + + public void setTestOnReturn(boolean testOnReturn) { + this.testOnReturn = testOnReturn; + } } diff --git a/src/main/java/io/jboot/db/datasource/DruidDataSourceFactory.java b/src/main/java/io/jboot/db/datasource/DruidDataSourceFactory.java index 871bd8a5..63ec8343 100644 --- a/src/main/java/io/jboot/db/datasource/DruidDataSourceFactory.java +++ b/src/main/java/io/jboot/db/datasource/DruidDataSourceFactory.java @@ -40,7 +40,14 @@ public class DruidDataSourceFactory implements DataSourceFactory { druidDataSource.setPassword(config.getPassword()); druidDataSource.setDriverClassName(config.getDriverClassName()); druidDataSource.setMaxActive(config.getMaximumPoolSize()); - + druidDataSource.setMaxWait(config.getMaxWait()); + druidDataSource.setTimeBetweenEvictionRunsMillis(config.getTimeBetweenEvictionRunsMillis()); + druidDataSource.setMinEvictableIdleTimeMillis(config.getMinEvictableIdleTimeMillis()); + druidDataSource.setTimeBetweenConnectErrorMillis(config.getTimeBetweenConnectErrorMillis()); + druidDataSource.setValidationQuery(config.getValidationQuery()); + druidDataSource.setTestWhileIdle(config.isTestWhileIdle()); + druidDataSource.setTestOnBorrow(config.isTestOnBorrow()); + druidDataSource.setTestOnReturn(config.isTestOnReturn()); if (config.getMinimumIdle() != null) { druidDataSource.setMinIdle(config.getMinimumIdle()); } -- Gitee From a17d541ecc6d3ebe42e0b59f4b2fbcf430712ec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=B2=E4=B8=96=E4=BC=9F?= Date: Tue, 26 May 2020 19:37:38 +0800 Subject: [PATCH 4/4] =?UTF-8?q?druid=20=E6=95=B0=E6=8D=AE=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/jboot/db/datasource/DataSourceConfig.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/jboot/db/datasource/DataSourceConfig.java b/src/main/java/io/jboot/db/datasource/DataSourceConfig.java index efe9f40a..ba15d55f 100644 --- a/src/main/java/io/jboot/db/datasource/DataSourceConfig.java +++ b/src/main/java/io/jboot/db/datasource/DataSourceConfig.java @@ -15,7 +15,6 @@ */ package io.jboot.db.datasource; -import com.alibaba.druid.pool.DruidDataSource; import com.jfinal.plugin.activerecord.DbKit; import io.jboot.utils.StrUtil; @@ -48,14 +47,14 @@ public class DataSourceConfig { private Integer minimumIdle = 0; // 配置获取连接等待超时的时间 - private long maxWait = DruidDataSource.DEFAULT_MAX_WAIT; + private long maxWait = -1; // 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 - private long timeBetweenEvictionRunsMillis = DruidDataSource.DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS; + private long timeBetweenEvictionRunsMillis = 60 * 1000L; // 配置连接在池中最小生存的时间 - private long minEvictableIdleTimeMillis = DruidDataSource.DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS; + private long minEvictableIdleTimeMillis = 1000L * 60L * 30L; // 配置发生错误时多久重连 - private long timeBetweenConnectErrorMillis = DruidDataSource.DEFAULT_TIME_BETWEEN_CONNECT_ERROR_MILLIS; + private long timeBetweenConnectErrorMillis = 500; private String validationQuery = "select 1"; private boolean testWhileIdle = true; private boolean testOnBorrow = false; -- Gitee