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之类的框架导致应用热部署失败的问题。
目录
相关文章
|
8月前
|
Java 数据库
SpringBoot手动取消接口执行方案
实际开发中经常会遇到比较耗时的接口操作,但页面强制刷新或主动取消接口调用后后台还是会继续运行,特别是有大量数据库操作时会增加服务器压力,所以进行研究测试后总结了一套主动取消接口调用的解决方案
109 0
|
8月前
|
Java 容器 Spring
SpringBoot:Bean生命周期自定义初始化和销毁
SpringBoot:Bean生命周期自定义初始化和销毁
198 1
|
8月前
|
Java
SpringBoot关闭过程中是如何销毁一个DisposableBean的?
SpringBoot关闭过程中是如何销毁一个DisposableBean的?
77 0
|
设计模式 存储 Java
Java版事件与委托实现自动创建工厂并热加载
Java版事件与委托实现自动创建工厂并热加载
Java版事件与委托实现自动创建工厂并热加载
|
Java Spring
Spring5源码 - 14 如何在所有Bean创建完后做扩展?
Spring5源码 - 14 如何在所有Bean创建完后做扩展?
110 0
|
Java Spring 容器
SpringBoot 启动时自动执行代码的几种方式
SpringBoot 启动时自动执行代码的几种方式
SpringBoot 启动时自动执行代码的几种方式
|
消息中间件 XML NoSQL
好像知道的人不多?Spring容器关闭执行销毁方法有几种,看完MQ源码我才知道SmartLifecycle最快
这段时间在写业务代码的时候用到了Spring容器关闭执行销毁方法来关闭正在执行中的业务。
|
Java 容器 Spring
【Spring 源码学习系列】Bean 的生命周期之初始化与销毁
本文将结合一个简单案例,学习 Bean 生命周期中的初始化和销毁阶段的具体内容。
306 0
【Spring 源码学习系列】Bean 的生命周期之初始化与销毁
|
Java 容器 Spring
Spring注解(六):Bean的生命周期中自定义初始化和销毁方法的四种方式
Bean的生命周期指的是Bean从被创建到初始化再被销毁的过程,IOC容器管理Bean的生命周期。在Bean的整个生命周期的过程中的初始化和销毁过程的方法可以被自定义,IOC容器当Bean进行到当前生命周期的时候调用自定义的初始化和销毁方法。在配置文件中可以通过添加init-method和destroy-method指定自定义的初始化和销毁方法
804 0
Spring注解(六):Bean的生命周期中自定义初始化和销毁方法的四种方式
|
Java Android开发 Spring
sping练习,在Eclipse搭建的Spring开发环境中,使用工厂方式创建Bean对象,将创建的Bean对象输出到控制台。
sping练习,在Eclipse搭建的Spring开发环境中,使用工厂方式创建Bean对象,将创建的Bean对象输出到控制台。
241 0
sping练习,在Eclipse搭建的Spring开发环境中,使用工厂方式创建Bean对象,将创建的Bean对象输出到控制台。