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之类的框架导致应用热部署失败的问题。
目录
相关文章
|
2月前
|
Java 数据库
SpringBoot手动取消接口执行方案
实际开发中经常会遇到比较耗时的接口操作,但页面强制刷新或主动取消接口调用后后台还是会继续运行,特别是有大量数据库操作时会增加服务器压力,所以进行研究测试后总结了一套主动取消接口调用的解决方案
18 0
|
2月前
|
Java 容器 Spring
SpringBoot:Bean生命周期自定义初始化和销毁
SpringBoot:Bean生命周期自定义初始化和销毁
|
4月前
|
NoSQL Java Redis
SpringBoot-自定义监听器
本文讲解如何在Spring Boot创建自定义监听器
40 0
SpringBoot-自定义监听器
|
9月前
|
Java
如何在SpringBoot启动过程中,进行自定义操作?
如何在SpringBoot启动过程中,进行自定义操作?
41 0
|
5月前
|
Java 数据库
Activity7整合springboot:流程部署,定义,实例(一)
Activity7整合springboot:流程部署,定义,实例(一)
|
5月前
|
Java
SpringBoot关闭过程中是如何销毁一个DisposableBean的?
SpringBoot关闭过程中是如何销毁一个DisposableBean的?
31 0
|
5月前
|
缓存 NoSQL Java
SpringBoot - Spring缓存默认配置与运行流程
SpringBoot - Spring缓存默认配置与运行流程
31 1
|
12月前
|
Java Spring
Spring5源码 - 14 如何在所有Bean创建完后做扩展?
Spring5源码 - 14 如何在所有Bean创建完后做扩展?
70 0
|
Java
SpringBoot项目启动过程中做数据资源初始化的方式
SpringBoot项目启动过程中做数据资源初始化的方式
367 0
|
Java Spring 容器
SpringBoot 启动时自动执行代码的几种方式
SpringBoot 启动时自动执行代码的几种方式
SpringBoot 启动时自动执行代码的几种方式