博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web项目中关闭线程
阅读量:4118 次
发布时间:2019-05-25

本文共 544 字,大约阅读时间需要 1 分钟。

Weblogic的update和stop/start的区别

 

通过进程实现一个黑名单缓存机制时,无意中发现在weblogic中update应用时,已启用的进程依然运行,并没有随着应用的更新而终止,这显然是一个隐含的故障,必须解决。开发阶段为了方便,基本上都是重启weblogic服务器,没有发现这个问题。

 

问题的缘由:

对weblogic的webapp执行 stop/start时候,只会调用javax.servlet.ServletContextListener接口的

contextDestroyed()、contextInitialized()方法。

所以对于单例的类,或者类中的静态成员变量,就可能存在危险。

 

而update的时候不仅会调用ServletContextListener接口的方法,而且会将类对象摧毁,然后ClassLoader重新加载相关的类。单例的类也同样要摧毁掉重新创建。

 

 

另外update或者stop,甚至delete掉webapp的时候 其实程序中start起来的线程都继续在跑的(因为此时线程的生命期跟webapp不关联,而是跟weblogic的主进程关联)。 所以对于webapp,都必须在contextDestroyed() 将该中止的线程手动停止掉。

转载地址:http://pdcpi.baihongyu.com/

你可能感兴趣的文章
你是怎么学习 NLP 的?
查看>>
免费 Chat | 从 JavaScript 到 TypeScript
查看>>
Spring MVC 过时了吗?
查看>>
不学设计模式,源码你都看不懂!
查看>>
大数据“重磅炸弹”:实时计算框架 Flink
查看>>
算法入门,其实可以像读小说一样有趣
查看>>
给后端程序员看的 Vue 快速入门教程
查看>>
从事 Linux 开发一定要熟悉 GDB
查看>>
为什么推荐系统已成标配?
查看>>
CSDN社区运营午餐会第15期–发现你对骑行的热爱
查看>>
Python 程序员应读的 7 本经典书籍
查看>>
MQTT 万物互联第一步,物联网圈的 HTTP
查看>>
饿了么即时配送分流的可运营架构演变
查看>>
快速入门深度学习,从 Deeplearning4j 开始
查看>>
操作系统基础: C 语言实现用户态线程(实战)
查看>>
如何成为一名合格的 C/C++ 开发者?
查看>>
唉,offer 拿到手软怎么破!
查看>>
从 JavaScript 到 Vue 组件的快速开发
查看>>
码农租房有学问
查看>>
日本 IT 圈神作之书,好懂得可怕
查看>>