日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Web进程被kill掉后线程还在运行怎么办?

發(fā)布時間:2023/12/2 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web进程被kill掉后线程还在运行怎么办? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 背景描述
  • 原因分析
  • 處理方案
  • 參考

背景描述

系統(tǒng)有一個配置表,系統(tǒng)在啟動后會啟動一個線程,每隔5分鐘將配置表里所有的數(shù)據(jù)更新到內(nèi)存中。
系統(tǒng)是通過jenkins構(gòu)建(直接kill掉Web進程,然后傳入新的包再啟動)的,每次在jenkins在構(gòu)建系統(tǒng)后的5分鐘內(nèi),系統(tǒng)都會報一次錯:

Caused by: java.lang.IllegalStateException: EntityManagerFactory is closedat 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構(gòu)建后系統(tǒng)只報一次異常和具體的堆棧信息,判斷是更新配置信息到內(nèi)存的線程沒有在kill掉Web進程的時候停掉。

處理方案

1)使用Java EE5中的注解@PreDestroy;嘗試過,沒成功
2)使用Spring中的DisposableBean或配置destroy-method。(類實現(xiàn) DisposableBean 接口,在 destroy() 方法中實現(xiàn)資源釋放)使用該方式成功

參考

Tomcat熱部署,Web工程中線程沒有終止(https://www.cnblogs.com/shuimuzhushui/p/8490619.html)

轉(zhuǎn)載于:https://www.cnblogs.com/wsygdb/p/10951351.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Web进程被kill掉后线程还在运行怎么办?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。