程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring應用常駐內存的實現

Spring應用常駐內存的實現

編輯:關於JAVA

一個後台應用程序,使用了Spring+iBatis框架。

有這樣的需求,要求程序啟動後,要一直駐留內存,而不能因為出現數據庫連接失效、“閃動”、或者網線斷了而掛起,因為沒有人值守程序,並且當網絡故障、數據庫故障、配置參數等故障排除後,程序能根據修復的新狀態繼續執行。

實現方式:以前使用Linux操作系統的shell腳本定時檢測,但是俺不會寫shell腳本。

於是有了下面的實現方式:

public static void main(String[] args) {
  while (true) {
     try {
         ctx = ApplicationContextUtil.getApplicationContext();
         IssuePlan issuePlan = (IssuePlan) ctx.getBean("issuePlan");
         issuePlan.execute();
        } catch (Throwable e) {
          log.error("網絡視頻節目分發程序啟動發生了嚴重錯誤!", e);
          try {
              Thread.sleep(pause_timespan * 1000L);
          } catch (InterruptedException e1) {
          }
       }
  }
}

這種方式運行良好,每次因為嚴重錯誤都會重新初始化Spring的ApplicationContext。這樣,整個程序的運行就是:一直執行任務,有任務就執行,沒任務休息一段時間,有錯誤等待一段時間重試,沒錯誤繼續。

issuePlan.execute(); 是核心的後台任務執行者,這個方法在正常情況下是不會退出的,寫法是while(true)邏輯,只有當發生一些嚴重錯誤會導致此方法發生異常退出。

歡迎大家多提提意見@!

出處:http://lavasoft.blog.51cto.com/62575/204228

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved