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.pswp.cn/bicheng/79925.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79925.shtml
英文地址,請注明出處:http://en.pswp.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;引入新型雙冪次趨近…

德爾菲法和層次分析法是什么

德爾菲法和層次分析法是什么 德爾菲法和層次分析法是兩種常用的決策分析方法 德爾菲法 定義:德爾菲法是一種采用背對背的通信方式征詢專家小組成員的預測意見,經過幾輪征詢,使專家小組的預測意見趨于集中,最后做出符合市場未來發展趨勢的預測結論。實施步驟 組成專家小組…