tomcat jdbc连接池处理 No operations allowed after connection closed异常的配置方案

16 篇文章 0 订阅
3 篇文章 0 订阅

目录

1、tomcat jdbc pool的默认属性

2、出现异常的原因

3、总结


1、tomcat jdbc pool的默认属性

2、出现异常的原因

        MySQL 5.0 以后针对超长时间数据库连接做了一个处理,即一个数据库连接在无任何操作情况下过了 8 个小时后(MySQL 服务器默认的超时时间是 8 小时),MySQL 会自动把这个连接关闭。在数据库连接池中的 connections 如果空闲超过 8 小时,MySQL 将其断开,而数据库连接池并不知道该 connection 已经失效,这个时候你请求数据库链接,连接池会将失效的 connection 给你,so~,SpringBoot 温柔的告诉你 No operations allowed after connection closed。SpringBoot 2.0 以上版本,mysql-connector-java 默认使用的是 8.0 以上版本。 

    可以用一下命令查看MySQL超时时间:

SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
SHOW GLOBAL VARIABLES LIKE 'interactive_timeout';

3、总结

        根据以上信息,我们需要配置连接池的验证功能,保持连接的心跳。设置validationInterval属性为3600000(验证的时间间隔1小时)。以及validationQuery = “select 1 from dual” (也可以写成select 1)。testWhileIdle设置为true。

dataSource.setTestWhileIdle(true);
dataSource.setValidationQuery("select 1 from dual");
dataSource.setValidationInterval(3600000);

   

 参考文献:

Springboot_Tomcat数据库连接池配置_org.apache.tomcat.jdbc.pool.datasource-CSDN博客

SpringBoot 报 No operations allowed after connection closed 异常解决办法-腾讯云开发者社区-腾讯云

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值