NipGeihou's blog NipGeihou's blog
  • 开发规范
  • 进阶笔记
  • 微服务
  • 快速开始
  • 设计模式
  • NoSQL 数据库

    • Redis
  • 数据结构与算法
  • 计算机网络
烹饪
关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • 开发规范
  • 进阶笔记
  • 微服务
  • 快速开始
  • 设计模式
  • NoSQL 数据库

    • Redis
  • 数据结构与算法
  • 计算机网络
烹饪
关于
  • 分类
  • 标签
  • 归档
  • 设计模式

  • 开发规范

  • 经验分享

  • 记录

    • Spring

      • 「记录」Spring经验总结
      • 「Spring Boot」配置优先级
      • 注解 - @Transactional 事务
    • 「记录」SpringBoot与前端传递的json中属性映射读写注解
    • Maven常用命令
    • 「记录」ruoyi-vue部署Linux报错
    • 「记录」Java使用CAS更新对象字段值
    • Spring Boot优雅关机报dataSource already closed
    • 「MyBatis」MyBatis常用标签
    • 改造ruoyi-cloud
    • maven报错:'parent.relativePath' points at no local
  • 快速开始

  • 笔记

  • 面试题

  • 微服务

  • Java
  • 记录
NipGeihou
2022-03-01

Spring Boot优雅关机报dataSource already closed

项目中有一个功能,是使用定时任务采集数据,在使用优雅关机功能时会出现数据源早于线程池中的线程关闭,从而导致 Caused by: com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Tue Mar 01 12:19:07 CST 2022 错误,尝试以下方式可以解决上述问题,其逻辑是在监听到程序关闭事件时首先阻塞关闭连接池 shutdown() 。

@Slf4j
@Component
public class ApplicationEventListener implements ApplicationListener<ApplicationEvent> {

    @Resource
    private ThreadPoolTaskExecutor collectThreadPoolExecutor;

    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        if (event instanceof ContextClosedEvent) {
            log.info("collectThreadPoolExecutor.shutdown().......");
            collectThreadPoolExecutor.shutdown();
        }
    }
}
上次更新: 2023/06/10, 18:45:20
「记录」Java使用CAS更新对象字段值
「MyBatis」MyBatis常用标签

← 「记录」Java使用CAS更新对象字段值 「MyBatis」MyBatis常用标签→

最近更新
01
概念
06-10
02
第三方登录 - Facebook
06-09
03
防火墙 - iptables
06-08
更多文章>
Theme by Vdoing | Copyright © 2018-2023 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式