IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 修改pro文件,tomcat自动重启怎么办? -> 正文阅读

[Java知识库]修改pro文件,tomcat自动重启怎么办?

前些日子碰到一个很奇怪的问题:

现象是,请求产品中的一个初始化接口,外置tomcat就会自动重启,报以下错误

16-Jul-2021 16:11:01.332 警告 [Catalina-utility-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc
Web应用程序 [ROOT] 注册了JDBC驱动程序 [com.alibaba.druid.proxy.DruidDriver],但在Web应用程序停止时无法注销它。 为防止内
存泄漏,JDBC驱动程序已被强制取消注册。
16-Jul-2021 16:11:01.333 警告 [Catalina-utility-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc
Web应用程序 [ROOT] 注册了JDBC驱动程序 [org.postgresql.Driver],\ 但在Web应用程序停止时无法注销它。 为防止内
存泄漏,JDBC驱动程序已被强制取消注册。
16-Jul-2021 16:11:01.333 警告 [Catalina-utility-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads 
Web应用程序[ROOT]似乎启动了一个名为[globalEventExecutor-2-2]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈
跟踪:[
 java.base@11.0.11/jdk.internal.misc.Unsafe.park(Native Method)
 java.base@11.0.11/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
 java.base@11.0.11/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchr
onizer.java:2123)
 java.base@11.0.11/java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:458)
 io.netty.util.concurrent.GlobalEventExecutor.takeTask(GlobalEventExecutor.java:90)
 io.netty.util.concurrent.GlobalEventExecutor$TaskRunner.run(GlobalEventExecutor.java:230)
 io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
 java.base@11.0.11/java.lang.Thread.run(Thread.java:829)]
 
16-Jul-2021 16:11:01.335 严重 [Catalina-utility-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks 
web应用程序[ROOT]创建了一个ThreadLocal,其键类型为[java.lang.ThreadLocal](值为[java.lang.ThreadLocal@d24a8c7])
,值类型为[java.util.ArrayList](值为[[
net.luculent.liems.framework.core.database.Database@73da3894,  
net.luculent.liems.framework.core.database.Database@6efd6d84]),
但在停止web应用程序时未能将其删除。线程将随着时间的推移而更新,以尝试避免可能的内存泄漏
16-Jul-2021 16:11:08.453 信息 [Catalina-utility-2] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于
TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可
以缩短启动时间和JSP编译时间。

?分析日志,错误都指向了WebappClassLoaderBase.clear*()方法,在清除threadLocal中的db链接时没有成功,应该是db还没有被释放,所以才会提示clear方法失败。没释放的原因,也一定与tomcat重启有关。

接下来就是排查接口,果不其然。接口逻辑中存在 writeProp(str)方法,会对Config.properties文件进行写入,该文件在项目启动过程中已经加载一遍,又被改变,导致tomcat的重新启动。所以说日志文件的警告不是导致项目重启的原因,而是因为项目重启导致了这些警告。
修改tomcat下conf文件夹server.xml的配置<Context?docBase='../sth'?path=''?reloadable='true'?sessionCookieName='
LiemsCookie'></Context>,将reloadable属性修改为false,这样当resource下properties文件在运行期被修改时,tomcat就不会重新部署项目reload资源文件,推荐该属性值为false。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 20:46:54  更:2021-08-02 20:47:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 12:33:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码