Tomcat中Web应用程序停止时为了防止内存泄漏,JDBC驱动程序被强制取消注册出现原因

1.问题描述

本地Windows环境开发的Springboot项目同样的mysql版本,jdk版本,tomcat版本,本地运行没有任何问题,发布到阿里云服务器上时报以下问题:

06-May-2025 20:06:12.842 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [xxxxx-admin] 注册了JDBC驱动程序 [com.alibaba.druid.proxy.DruidDriver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。
06-May-2025 20:06:12.842 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [xxxxx-admin] 注册了JDBC驱动程序 [com.mysql.jdbc.Driver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。
06-May-2025 20:06:12.852 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[xxxxx-admin]似乎启动了一个名为[crmeb-scheduled-task-pool-1]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:748)]

以上异常信息,上网查找了很多,终于成功解决。

解决办法:

手动配置监听器,用来在Tomcat关闭时取消注册JDBC驱动程序,并将线程停止

编写自定义监听器

代码如下:

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

//mysql8及以上用 com.mysql.cj

import com.mysql.jdbc.AbandonedConnectionCleanupThread;
//import com.mysql.cj.jdbc.AbandonedConnectionCleanupThread;

import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;

@WebListener
public class DriverMangerListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) {
    }

    public void contextDestroyed(ServletContextEvent sce) {
        AbandonedConnectionCleanupThread.uncheckedShutdown();
        Enumeration<Driver> enumeration = DriverManager.getDrivers();
        while (enumeration.hasMoreElements()) {
            try {
                DriverManager.deregisterDriver(enumeration.nextElement());
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

我的是Springboot项目直接用@WebListener注解即可,要是ssm或者springmvc项目的话,在web.xml中添加以下代码注册该listener即可,注意类的路径以及该配置所在文件中的位置。

<listener><listener-class>com.ssm.util.DriverMangerListener</listener-class>
</listener>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/79925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主流国产大模型(以华为盘古大模型和腾讯混元大模型为例)API调用接口的具体参数和使用方法,包括Python和C++的示例代码

以下是主流国产大模型&#xff08;以华为盘古大模型和腾讯混元大模型为例&#xff09;API调用接口的具体参数和使用方法&#xff0c;包括Python和C的示例代码。 华为盘古大模型 API参数&#xff1a; - model&#xff1a;模型名称&#xff0c;如pangu-nlp-large。 - messages&…

高效调用京东 API 实战:商品详情页实时数据采集接口开发指南​

在当今数字化商业环境中&#xff0c;电商数据的实时获取与分析对于企业的决策制定和市场竞争力提升至关重要。京东作为国内领先的电商平台&#xff0c;提供了丰富的 API 接口&#xff0c;允许开发者高效地获取商品详情页的实时数据。本文将详细介绍如何通过实战开发&#xff0c…

MFC自定义控件开发与使用指南

MFC自定义控件开发与使用指南 自定义控件、双缓冲 1. 概述 MFC(Microsoft Foundation Classes)框架提供了丰富的内置控件,但在实际开发中,我们常常需要创建自定义控件来满足特定的界面需求。本文将详细介绍如何在MFC中开发自定义控件,并以CCustomTextControl为例,展示自…

第100+40步 ChatGPT学习:R语言实现多轮建模

回顾一下什么叫多轮建模&#xff1a; 要综合判断一个模型好不好&#xff0c;一次随机抽样是不行的&#xff0c;得多次抽样建模&#xff0c;看看整体的性能如何才行&#xff08;特别是对于这种小训练集&#xff09;。 所以我的思路是&#xff0c;随机抽取训练集和验证集2000次…

编码器型与解码器型语言模型的比较

编码器型与解码器型语言模型的比较 1. 引言 自然语言处理&#xff08;NLP&#xff09;领域近年来取得了革命性进展&#xff0c;这在很大程度上归功于基于Transformer架构的语言模型。在这一技术生态中&#xff0c;编码器型&#xff08;Encoder-only&#xff09;和解码器型&am…

python--------修改桌面文件内容

目录 1. 文件的读写1. 写入文件2. 读取文件3. 追加内容到文件 2.file_path 的常见方法1. 绝对路径2. 相对路径3. 使用 os.path 模块构建路径5. 路径操作5. 用户主目录路径 4. 修改文件内容1.将修改后的内容写回文件2. 逐行处理文件内容3. 使用上下文管理器确保文件安全 1. 文件…

爱普生VG7050EFN压控晶振在小基站的应用优势

在 5G 通信时代&#xff0c;小基站作为提升网络覆盖和容量的重要一环&#xff0c;小基站的稳定运行对于保障用户流畅的通信体验起着关键作用。而在小基站的核心组件中&#xff0c;时钟信号源的质量直接影响着通信质量和设备性能。爱普生VG7050EFN晶振凭借其高性能、小尺寸和低功…

人工智能如何革新数据可视化领域?探索未来趋势

在当今数字化时代&#xff0c;数据如同汹涌浪潮般不断涌现。据国际数据公司&#xff08;IDC&#xff09;预测&#xff0c;全球每年产生的数据量将从 2018 年的 33ZB 增长到 2025 年的 175ZB。面对如此海量的数据&#xff0c;如何有效理解和利用这些数据成为了关键问题。数据可视…

精益数据分析(42/126):移动应用商业模式的深度剖析与实战要点

精益数据分析&#xff08;42/126&#xff09;&#xff1a;移动应用商业模式的深度剖析与实战要点 在创业和数据分析的学习之路上&#xff0c;我们持续探索不同商业模式的奥秘&#xff0c;今天聚焦于移动应用商业模式。我希望和大家一起进步&#xff0c;深入解读《精益数据分析…

未来 CSS:变量、容器查询与新特性的探索

引言&#xff1a;CSS 演进与未来展望 在前端开发的快速发展浪潮中&#xff0c;CSS 已从简单的样式标记语言蜕变为构建现代设计系统的强大基础。根据 HTTP Archive 的 Web Almanac 的调查&#xff0c;超过 86% 的网站已采用至少一项现代 CSS 特性&#xff0c;这一数字仍在持续攀…

概统期末复习--速成

随机事件及其概率 加法公式 推三个的时候ABC&#xff0c;夹逼准则 减法准则 除法公式 相互独立定义 两种分析 两个解法 古典概型求概率&#xff08;排列组合&#xff09; 分步相乘、分类相加 全概率公式和贝叶斯公式 两阶段问题 第一个小概率*A在小概率的概率。。。累计 …

论微服务架构设计及应用

目录 摘要(300~330字) 正文(2000~2500字,2200字为宜) 背景介绍(500字做左右) 论点论据(1500字做左右)

【东枫科技】AMD / Xilinx Alveo™ V80计算加速器卡

AMD / Xilinx Alveo™ V80计算加速器卡 AMD/Xilinx Alveo ™ V80计算加速器卡是一款功能强大的计算加速器&#xff0c;基于7nm Versal™ 自适应SoC架构而打造。 AMD/Xilinx Alveo V80卡设计用于内存密集型任务。 这些任务包括HPC、数据分析、网络安全、传感器处理、计算存储和…

基于大模型的自然临产阴道分娩全流程预测与方案研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究意义 1.3 国内外研究现状 二、大模型技术原理与应用概述 2.1 大模型基本原理 2.2 在医疗领域的应用现状 2.3 用于分娩预测的优势 三、术前预测与准备方案 3.1 产妇身体状况评估指标 3.2 大模型预测流程与方法 3.3 基于预…

macbook install chromedriver

# 打开 Chrome 访问以下地址查看版本 chrome://version/# 终端查看版本号 (示例输出: 125.0.6422.113) /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version测试&#xff1a;

LeetCode 790 多米诺和托米诺平铺 题解

对于本题不去看LeetCode的评论区和题解很难想到如何去dp&#xff0c;毕竟就算再怎么枚举也很难找到适用于面向结果的规律。所以对于题解我建议大家还是去看一下灵神给的题解&#xff0c;以下是灵神汇总的图&#xff0c;如果能看懂的话&#xff0c;对于解决题目有很大的帮助。 根…

Day17 聚类算法(K-Means、DBSCAN、层次聚类)

一、聚类算法 1. K-Means 聚类 原理&#xff1a;K-Means 是一种基于划分的聚类算法&#xff0c;目标是将 n n n 个样本划分到 k k k 个簇中&#xff0c;使得簇内样本的相似度尽可能高&#xff0c;簇间样本的相似度尽可能低。算法通过迭代的方式&#xff0c;不断更新簇的质心…

【编程干货】本地用 Ollama + LLaMA 3 实现 Model Context Protocol(MCP)对话服务

模型上下文协议&#xff08;MCP&#xff09;本身提供的是一套标准化的通信规则和接口&#xff0c;简化了客户端应用的开发。 MCP 实际上是一套规范&#xff0c;官方把整套协议分成「传输层 协议层 功能层」三大块&#xff0c;并对初始化握手、能力协商、数据/工具暴露、安全…

永磁同步电机控制算法-基于新型趋近律的反馈线性化滑模控制

一、原理介绍 针对永磁同步电机传统PID矢量控制方式无法实现d、q轴电流完全解耦控制的问题&#xff0c;运用反馈线性化理论实现永磁同步电机转速和d轴电流解耦。针对反馈线性化导致的鲁棒性下降问题&#xff0c;利用滑模控制方式提高系统鲁棒性&#xff0c;引入新型双幂次趋近…

德尔菲法和层次分析法是什么

德尔菲法和层次分析法是什么 德尔菲法和层次分析法是两种常用的决策分析方法 德尔菲法 定义:德尔菲法是一种采用背对背的通信方式征询专家小组成员的预测意见,经过几轮征询,使专家小组的预测意见趋于集中,最后做出符合市场未来发展趋势的预测结论。实施步骤 组成专家小组…