bboss热部署应用资源销毁监听器ApplicationLifeListener使用说明-阿里云开发者社区

开发者社区> bboss> 正文

bboss热部署应用资源销毁监听器ApplicationLifeListener使用说明

简介: bboss热部署应用资源销毁监听器ApplicationLifeListener使用说明 实现类org.frameworkset.web.listener.ApplicationLifeListener实现javax.servlet.ServletContextListener接口,当应用卸载时用来清除框架和应用系统的内存缓存资源,有效规避应用热部署时内存泄露和线程泄露风险。
+关注继续查看
bboss热部署应用资源销毁监听器ApplicationLifeListener使用说明

实现类org.frameworkset.web.listener.ApplicationLifeListener实现javax.servlet.ServletContextListener接口,当应用卸载时用来清除框架和应用系统的内存缓存资源,有效规避应用热部署时内存泄露和线程泄露风险。
在web.xml开头处配置ApplicationLifeListener即可,配置方法如下:
<listener>
	<description><![CDATA[应用销毁监听器:
		在应用销毁之前调用系统shutdown 回调函数,前提是所有的shutdown回调函数
		是通过以下方法注册:
		BaseApplicationContext.addShutdownHook(new Runnable(){

				@Override
				public void run() {
					
					try {
						stop();
					

					} catch (Throwable e) {
							e.printStackTrace();
					}
				}});]]>
		
	</description>
	<listener-class>org.frameworkset.web.listener.ApplicationLifeListener</listener-class>
	</listener>

ApplicationLifeListener组件在应用销毁时主动销毁bboss框架占用的系统资源,应用程序也可以通过org.frameworkset.spi.BaseApplicationContext组件提供的addShutdownHook方法添加自己的资源销毁回调程序:
public static void addShutdownHook(Runnable destroyVMHook,int proir)
public static void addShutdownHook(Runnable destroyVMHook)
两个方法参数说明:
destroyVMHook-为java.lang.Runnable接口实现类,用来执行具体的资源销毁逻辑
int proir-指定Runnable 的执行优先级,数值越大越先执行。

方法使用示例:
按默认添加顺序执行方式
BaseApplicationContext.addShutdownHook(new Runnable(){

				@Override
				public void run() {
					
					try {
						CacheUtil.destroy();
					

					} catch (Throwable e) {
												e.printStackTrace();
					}
				}});

指定执行优先级方式:
BaseApplicationContext.addShutdownHook(new Runnable(){

				@Override
				public void run() {
					
					try {
						CacheUtil.destroy();
					

					} catch (Throwable e) {
												e.printStackTrace();
					}
				}},100);


ApplicationLifeListener可有效解决bboss托管的quartz、activiti之类的框架导致应用热部署失败的问题。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
oracl使用DataBase Configuration Assistant创建、删除数据库
原文:oracl使用DataBase Configuration Assistant创建、删除数据库可以使用DataBase Configuration Assistant来创建一个心得数据库。Database Configuration Assistant简称是DBCA,是创建、配置以及管理数据库的一个工具。
1262 0
【Spring】Redis的两个典型应用场景--good
原创 BOOT Redis简介 Redis是目前业界使用最广泛的内存数据存储。相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化。
1352 0
Minimal安装CentOS 7使用yum报This system is not registered to Red Hat Subscription Management.
问题描述 最小化安装CentOS 7的Linux系统后,发现yum安装任何工具,都报This system is not registered to Red Hat Subscription Management. 错误如下所示: 导致很多工具都无法yum进行安装,影响系统使用。
1091 0
AliOS Things声源定位应用演示
1. 概述 利用麦克风阵列进行声源定位在智能降噪、语音增强、语音识别等领域有广泛应用和研究前景。本文介绍基于AliOS Things + STM32F413H Discovery开发板实现声源定位算法集成和功能演示。
3320 0
使用xshell连接服务器问题:ssh_exchange_identification: Connection closed by remote host
在连接服务器的时候遇到了如下的问题: 在网上查找方法: 1、让/etc/hosts.allow 和/etc/hosts.
1229 0
如何使用 GeoTrellis 和 React 构建地理处理应用程序
这篇博文是使用 GeoTrellis、Akka HTTP和 React 创建GIS处理的网页应用程序的指南。翻译自凯利·英尼斯 (Kelly Innes)的博客。
160 0
ActiveReports 报表应用教程 (1)---Hello ActiveReports
原文:ActiveReports 报表应用教程 (1)---Hello ActiveReports      在开始专题内容之前,我们还是了解一下 ActiveReports 是一款什么产品:ActiveReports是一款在全球范围内应用非常广泛的报表控件,以提供.NET报表所需的全部报表设计功能领先于同类报表控件,包括对交互式报表的强大支持、丰富的数据可视化形式、与Visual Studio的完美集成、以及对WPF / WinForm / ASP.NET / Silverlight和Windows Azure的多平台支持等。
1166 0
+关注
bboss
热衷开源,主要开源作品:开源框架bboss,bboss session,bboss 序列化等 bboss特色:http://yin-bp.iteye.com/blog/1080824
328
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载