druid关闭连接之后,再开启连接失败

使用的是servlet3.0+druid,对数据库操作执行完后,调用了DruidUtils的close方法,下次再对数据库操作,调用DruidUtils.getConn()获取连接的时候报如下错误{1983F2F3-3C96-4A39-A685-6A26A36F9D56}_20200409133642.jpg

/**

  • Druid连接池

*
*/
public class DruidUtils {


public static DruidDataSource dataSource;

static {
    Properties prop = new Properties();
    try {
        InputStream bb= DruidUtils.class.getClassLoader().getResourceAsStream("com/qrcode/db/druid.properties");
        prop.load(DruidUtils.class.getClassLoader().getResourceAsStream("com/qrcode/db/druid.properties"));
        dataSource = (DruidDataSource)DruidDataSourceFactory.createDataSource(prop);
        //dataSource.addFilters("stat,log4j,wall");
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public static Connection getConn() {
    try {
        return dataSource.getConnection();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

public static void colse(){
    dataSource.close();
}

}

druid配置文件

驱动

driverClassName=com.mysql.jdbc.Driver

url

url=jdbc:mysql://127.0.0.1:3306/qrcode?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2B8

用户名

username=root

密码

password=root

连接池初始化大小

initialSize=10

活动链接

maxActive=10

最小连接数

minIdle=10

阅读 5.1k
2 个回答

dataSource.close(); 之后就不能getConn
可能需要 restart 或者 resetStat 一下?

dataSource.close();的意思是关闭连接池,一般程序关闭的时候才会使用。

你这种情况应该把Connection 定义为全局变量,关闭的时候用connection.close();

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题