最近在做期末项目的时候,不知道为何jetty已经顺利运行,并且也可以顺利的进入网页,但是过了一会儿,我在后台操作了没多久却超时无法跳转了
然后此时IDEA开始报异常
通过查阅了相关的资料,这是Druid连接池泄露的原因,可能是我们之前将Druid连接池的最大连接数设置得太小了
原本Druid连接池配置如下:
package cn.edu.mju.project1.persiste.impl;
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
public class MySqlDbUtil {
private static DruidDataSource dataSource = null; //数据库数据源
private static void initDataSource() throws Exception{
if (dataSource == null){
dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/myebookstore?useUnicode=true&characterEncoding=UTF-8");
dataSource.setUsername("root");
dataSource.setPassword("root");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");//告知驱动入口类
dataSource.setInitialSize(2);//初始化2个连接数
dataSource.setMinIdle(2); //定义最小连接数
dataSource.setMaxActive(10); // 定义最大连接数
dataSource.setMaxWait(20000);//设置最大等待时间(ms)
dataSource.setTimeBetweenEvictionRunsMillis(20000);//设置检测时间
dataSource.setValidationQuery("SELECT 'x'"); //心跳
dataSource.setTestWhileIdle(true);
dataSource.setTestOnBorrow(true);
}
}
public static Connection getConnection() throws Exception{
initDataSource();
return dataSource.getConnection();
}
}
之前我们设置的最大连接数为10,显然有点小,我们可以将其设置为200,配置如下:
package cn.edu.mju.project1.persiste.impl;
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
public class MySqlDbUtil {
private static DruidDataSource dataSource = null; //数据库数据源
private static void initDataSource() throws Exception{
if (dataSource == null){
dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/myebookstore?useUnicode=true&characterEncoding=UTF-8");
dataSource.setUsername("root");
dataSource.setPassword("root");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");//告知驱动入口类
dataSource.setInitialSize(2);//初始化2个连接数
dataSource.setMinIdle(2); //定义最小连接数
dataSource.setMaxActive(200); // 定义最大连接数
dataSource.setMaxWait(20000);//设置最大等待时间(ms)
dataSource.setTimeBetweenEvictionRunsMillis(20000);//设置检测时间
dataSource.setValidationQuery("SELECT 'x'"); //心跳
dataSource.setTestWhileIdle(true);
dataSource.setTestOnBorrow(true);
}
}
public static Connection getConnection() throws Exception{
initDataSource();
return dataSource.getConnection();
}
}
此时问题顺利的解决,也不会再因为超时而导致无法跳转页面。