Web进程被kill掉后线程还在运行怎么办?
背景描述
系统有一个配置表,系统在启动后会启动一个线程,每隔5分钟将配置表里所有的数据更新到内存中。
系统是通过jenkins构建(直接kill掉Web进程,然后传入新的包再启动)的,每次在jenkins在构建系统后的5分钟内,系统都会报一次错:
Caused by: java.lang.IllegalStateException: EntityManagerFactory is closed
	at org.hibernate.internal.SessionFactoryImpl.validateNotClosed(SessionFactoryImpl.java:531)
	at org.hibernate.internal.SessionFactoryImpl.getCache(SessionFactoryImpl.java:830)
	at org.hibernate.internal.AbstractSharedSessionContract.<init>(AbstractSharedSessionContract.java:143)
	at org.hibernate.internal.AbstractSessionImpl.<init>(AbstractSessionImpl.java:29)
	at org.hibernate.internal.SessionImpl.<init>(SessionImpl.java:254)
	at org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession(SessionFactoryImpl.java:1290)
	at org.hibernate.internal.SessionFactoryImpl.openSession(SessionFactoryImpl.java:482)
原因分析
基于每次通过jenkins构建后系统只报一次异常和具体的堆栈信息,判断是更新配置信息到内存的线程没有在kill掉Web进程的时候停掉。
处理方案
1)使用Java EE5中的注解@PreDestroy;尝试过,没成功
2)使用Spring中的DisposableBean或配置destroy-method。(类实现 DisposableBean 接口,在 destroy() 方法中实现资源释放)使用该方式成功
参考
Tomcat热部署,Web工程中线程没有终止(https://www.cnblogs.com/shuimuzhushui/p/8490619.html)
Web进程被kill掉后线程还在运行怎么办?的更多相关文章
- ubuntu服务器常见使用技巧及-kill掉后GPU显存不释放进程-
		
如何解决python进程被kill掉后GPU显存不释放的问题 1 重新开一个shell,然后输入: ps aux|grep user_name|grep python.所有该用户下的python程序就 ...
 - 【原创】一个线程oom,进程里其他线程还能运行吗?
		
引言 这题是一个网友@大脸猫爱吃鱼给我的提问,出自今年校招美团三面的一个真题.大致如下 一个进程有3个线程,如果一个线程抛出oom,其他两个线程还能运行么? 先说一下答案,答案是还能运行 不瞒大家说, ...
 - 一个线程oom,进程里其他线程还能运行吗?
		
线程之间互相不影响:守护线程生活周期相同 引言 这题是一个网友@大脸猫爱吃鱼给我的提问,出自今年校招美团三面的一个真题.大致如下 一个进程有3个线程,如果一个线程抛出oom,其他两个线程还能运行么? ...
 - Linux下禁止使用swap及防止OOM机制导致进程被kill掉
		
首先解释两个概念: swap:在linux里面,当物理内存不够用了,而又有新的程序请求分配内存,那么linux就会选择将其他程序暂时不用的数据交换到物理磁盘上(swap out),等程序要用的时候再读 ...
 - [转]Linux下防止进程使用swap及防止OOM机制导致进程被kill掉
		
首先解释两个概念:swap:在linux里面,当物理内存不够用了,而又有新的程序请求分配内存,那么linux就会选择将其他程序暂时不用的数据交换到物理磁盘上(swap out),等程序要用的时候再读进 ...
 - JVM内存溢出后服务还能运行吗
		
文章开篇问一个问题吧,一个java程序,如果其中一个线程发生了OOM,那进程中的其他线程还能运行吗? 接下来做实验,看看JVM的六种OOM之后程序还能不能访问. 在这里我用的是一个springboot ...
 - CentOS7设置SVN自启动,提交报错,无权限.手动kill掉后重启,成功.
		
参考文档:http://tieba.baidu.com/p/5174054662 最近想尝试在CentOS7上搭建SVN服务.遇到的问题大致如题,我这边再详细描述一下. 虚拟机:VMware® Wor ...
 - eclipse 导入web项目后,线程假死
		
eclipse 导入web项目后,就出现关闭后,线程还存在的情况.使用java mission control 查看发现java script indexing线程在running. 关闭js验证后, ...
 - C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
		
C# 强制关闭当前程序进程(完全Kill掉不留痕迹) /// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID ...
 
随机推荐
- linux 命令——52 ifconfig(转)
			
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...
 - 用户在设置密码时,提醒请输入半角字符(vue+element+valid)
			
要保证callback()只有一个出口 rules:{ newPassword: [{validator:(rule,newPassword,callback)=>{ var all = fal ...
 - http请求头和相应头的作用
			
请求头(Request Headers) Accept:application/json, text/plain, */* Accept-Encoding:gzip, deflate Accept-L ...
 - 六、react添加多个className报错解决方法
			
例如<div className={style.calss1,style.class2}></div> 该方法会报错 想得到最终渲染的结果:<div class='cla ...
 - tmux 用z关闭之后的恢复
			
ctrl+b 然后z是全屏 但是如果是ctrl+z就是关闭窗口了 tmux ls看所有窗口 然后 tmux attach -t 2或者3就恢复
 - SpringBoot学习记录(二)
			
一. SpringBoot日志框架 SpringBoot:底层是Spring框架,Spring框架默认是用JCL(commons-logging): SpringBoot选用SLF4j和logback ...
 - DOM4j-中文API
			
1.DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包.DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP. ...
 - mysql切换数据库提示警告:Reading table information for completion of table and column names
			
登录数据库后,选择数据库时发现以下提示, mysql> use testReading table information for completion of table and column ...
 - node 中的redis使用
			
1.创建sql.config.js 配置文件 : var redis_db = { ", "URL":"127.0.0.1", "OPTIO ...
 - 项目实战8.2-Linux下Tomcat开启查看GC信息
			
本文收录在Linux运维企业架构实战系列 转自https://www.cnblogs.com/along21/ 一.开启GC日志 1.在Tomcat 的安装路径下,找到bin/catalina.sh ...