1. 程式人生 > >如何在關閉web服務時進行一些清理操作(Spring mvc)

如何在關閉web服務時進行一些清理操作(Spring mvc)

背景

目前正在替一家500強企業開發系統,因為系統眾多所以他們使用ESB對各個系統之間的服務進行管理,同樣也要求我們的系統進行對接。要求在我們的系統啟動時進行註冊,在系統關閉時進行登出。根據要求同事寫了一個serverlet在系統啟動的時候進行註冊操作,但是不知道在系統關閉時進行相應的操作。

解決方法

因為專案使用spring mvc 專案,所以我知道可以通過spring的監聽器完成相應的工作。 步驟1:實現ApplicationListener
package com.efuture.vpm.util;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextClosedEvent;


public class ApplicationEventListener implements ApplicationListener {
protected final Log log = LogFactory.getLog(getClass());
	public void onApplicationEvent(ApplicationEvent event) {
	
		 //容器關閉時觸發的事件
		if(event instanceof ContextClosedEvent ){
			
			log.info("application close       1111111111111111111111111111111111111     ");
		}else{
			log.info("application ohter event       222222222222222222222222222222222222222     ");
			
		}
	
	}
}

步驟2: 配置
 <!-- 應用級的監聽器 (登出esb) -->
     <bean id="sytemEventListener" class="com.efuture.vpm.util.ApplicationEventListener"></bean>
    

備註:

關閉事件的觸發僅限於正常方式關閉伺服器,而不是直接關閉 console視窗這樣的方式。