如何解决javaweb项目停止时,报的Tomcat停止时为了防止内存泄漏,JDBC驱动程序被强制取消注册错

1.问题

1.我的tomcat的版本为8.5.56 ,jdk版本为1.8, 数据源用的是Druid,使用的SSM框架搭建的web项目。
报错下:
在这里插入图片描述
在这里插入图片描述

2.解决方法:

1.手动写一个监听器
注:由于原文博客内容.shutdown();方法过期,我查看原类此方法继承了checkedShutdown(); 如果不改会启动警告

import com.mysql.jdbc.AbandonedConnectionCleanupThread;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.sql.DriverManager;

/**
 * 解决web应用程序注册了JDBC驱动程序
 * 手动配置一个监听器
 */
public class MyContextListener implements ServletContextListener {
    /**
     * 实现其中的初始化函数,当有事件发生时即触发
     * @param sce
     */
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("webService start");
    }

    /**
     * 
     * 实现其中的销毁函数
     * @param sce
     */
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("webService stop");
        try {
            while (DriverManager.getDrivers().hasMoreElements()){
                DriverManager.deregisterDriver(DriverManager.getDrivers().nextElement());
            }
            System.out.println("jdbc Driver close");
            // 由于原文博客内容.shutdown();方法过期,我查看原类此方法继承了checkedShutdown(); 如果不改会启动警告
            AbandonedConnectionCleanupThread.checkedShutdown();
            System.out.println("clean thread success");
        }
        catch (Exception e){
            e.printStackTrace();
        }

    }
}

2.在web.xml中注册监听器

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

3.运行结果
在这里插入图片描述
参考播客:https://blog.csdn.net/qq_40860565/article/details/105547194?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值