Spring整合ElasticJob 关闭Tomcat容器时内存泄漏
来源:互联网 发布:二维码美化软件是什么 编辑:程序博客网 时间:2024/06/06 03:26
在完成定时任务的过程中,基本要求完成但是在项目停止的时候,Job 不能正常的去关闭,报出警告:
org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [***_QuartzSchedulerThread] but has failed to stop it. This is very likely to create a memory ...
原因:servlet容器关闭时发现Job定时器线程还在执行,对其无所适从,不懂怎么办只能强行关闭。
解决思路:在关闭容器时的contextDestroyed事件里检测ServletContext里Job 相关属性,找到Bean然后调用它的方法结束掉
代码:
1、web.xml 增加一个listener
<listener> <listener-class>com.***.elasticjob.AppContextListener</listener-class></listener>
2、AppContextListener 代码
public class AppContextListener extends ContextLoader implements ServletContextListener{ private static Logger logger = LoggerFactory.getLogger(AppContextListener.class); @Override public void contextInitialized(ServletContextEvent servletContextEvent) { } @Override public void contextDestroyed(ServletContextEvent event) { logger.info("Destroying Context..."); try { WebApplicationContext context = (WebApplicationContext) event.getServletContext().getAttribute( WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); String[] beanNames = context.getBeanDefinitionNames(); for(String beanName:beanNames) { if(beanName.contains("dangdang")&&beanName.contains("SpringJobScheduler")){ logger.info("发现dangdang定时任务beanName: "+beanName); SpringJobScheduler scheduler = (SpringJobScheduler)context.getBean(beanName); scheduler.getSchedulerFacade().shutdownInstance(); } } } catch (Exception e) { logger.error("Error Destroying Context", e); } }}
参考文献:
https://www.cnblogs.com/passedbylove/p/7580477.html
http://blog.csdn.net/liujun_for_java/article/details/78101478
http://blog.csdn.net/dslztx/article/details/47276953
阅读全文
0 0
- Spring整合ElasticJob 关闭Tomcat容器时内存泄漏
- ElasticJob引发的Tomcat内存泄漏问题
- "Tomcat+Spring+Quartz"解决方案下,关闭Tomcat出现"线程未关闭,出现内存泄漏"错误
- 关闭Tomcat时,产生“线程未关闭,出现内存泄漏”错误和"java.lang.IllegalStateException"
- 关闭map窗口时,提示内存泄漏
- tomcat内存泄漏问题
- tomcat内存泄漏
- Tomcat内存泄漏配置
- Spring容器整合WebSocket
- ArcEngine开发程序中关闭时内存泄漏的问题
- Spring3.2.11与Quartz2.2.1整合时内存泄漏问题解决
- 关于tomcat内存泄漏问题
- Tomcat中的内存泄漏问题
- Tomcat如何检测内存泄漏
- 【内存泄漏】Android内存泄漏---资源未关闭
- SPRING+ACTIVEMQ+TOMCAT整合
- Spring容器上下文的关闭
- Spring容器优雅的关闭
- Python学习笔记(基础学习)
- Android PopupWindow实现带背景阴影的下滑选择框
- Spark 读取CSV 解析单元格多行数值问题
- 【实战】android的多线程下载
- android 路由框架搭建
- Spring整合ElasticJob 关闭Tomcat容器时内存泄漏
- Hdu 6240 01分数规划
- JSONObject类之解析json
- Mysql语句注意事项
- 调用函数求数组中的元素和,并统计数组中奇数的个数
- CentOS5.5使用yum时报错Error: Cannot find a valid baseurl for repo: addons
- 字体图标
- (转)在 CentOS7 上安装 MySQL5.7
- 有关数据库与界面传数据简单处理模式 ajax