如何在關閉web服務時進行一些清理操作(Spring mvc)
阿新 • • 發佈:2019-02-10
背景
目前正在替一家500強企業開發系統,因為系統眾多所以他們使用ESB對各個系統之間的服務進行管理,同樣也要求我們的系統進行對接。要求在我們的系統啟動時進行註冊,在系統關閉時進行登出。根據要求同事寫了一個serverlet在系統啟動的時候進行註冊操作,但是不知道在系統關閉時進行相應的操作。解決方法
因為專案使用spring mvc 專案,所以我知道可以通過spring的監聽器完成相應的工作。 步驟1:實現ApplicationListenerpackage 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視窗這樣的方式。