非spring项目Druid配置keepAlive参数不生效(附解决方案)

在非Spring的gradle项目中,使用DruidDataSourceFactory创建数据源时遇到Druid的keepAlive参数不生效的问题。经过研究发现,DruidDataSourceFactory的config方法不支持直接设置keepAlive。解决办法是通过JVM启动参数配置keepAlive,具体是在build.gradle文件中增加相应参数。
摘要由CSDN通过智能技术生成

背景:目前我司使用了阿里的druid来进行连接池管理连接,对接了n种数据库类型,因为创建连接很耗时,所以需要开启保活机制。

项目类型:gradle项目(非spring项目)

dataSource创建方式:DruidDataSourceFactory.createDataSource(),对应源码:

 public static DataSource createDataSource(Properties properties) throws Exception {
        return createDataSource((Map) properties);
    }

 public static DataSource createDataSource(Map properties) throws Exception {
        DruidDataSource dataSource = new DruidDataSource();
        config(dataSource, properties);
        return dataSource;
    }

起初对这块不太熟悉,直接在前人的代码上进行了简单修改,发布一段时间后发现并没有生效,后通过查阅资料和翻看源码得知,DruidDataSourceFactory中的config方法并没有keepAlive的参数设置,源码如下:

public class DruidDataSourceFactory implements ObjectFactory {

    private final static Log LOG = LogFactory.getLog(DruidDataSourceFactory.class);

    static final int UNKNOWN_TRANSACTIONISOLATION = -1;

    public final static String PROP_DEFAULTAUTOCOMMIT                   = "defaultAutoCommit";
    public final static String PROP_DEFAULTREADONLY                     = "defaultReadOnly";
    public final static String PROP_DEFAULTTRANSACTIONISOLATION         = "defaultTransactionIsolation";
    public final static String PROP_DEFAULTCATALOG                      = "defaultCatalog";
    public final static String PROP_DRIVERCLASSNAME                     = "driverClassName";
    public final static String PROP_MAXACTIVE                           = "maxActive";
    public final static String PROP_MAXIDLE                             = "maxIdle";
    public final static String PROP_MINIDLE                             = "minIdle";
    public final static String PROP_INITIALSIZE                         = "initialSize";
    public final static String PROP_MAXWAIT                             = "maxWait";
    public final static String PROP_TESTONBORROW                        = "testOnBorrow";
    public final static String PROP_TESTONRETURN                        = "testOnReturn";
    public final static String PROP_TIMEBETWEENEVICTIONRUNSMILLIS       = "timeBetweenEvictionRunsMillis";
    public final static String PROP_NUMTESTSPEREVICTIONRUN              = "numTestsPerEvictionRun";
    public final static String PROP_MINEVICTABLEIDLETIMEMILLIS          = "minEvictableIdleTimeMillis";
    public final static String PROP_PHY_TIMEOUT_MILLIS                  = "phyTimeoutMillis&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值