Java web實現TOMCAT啟動時加載程序里的定時器小記


下面就Servlet偵聽器結合Java定時器來講述整個實現過程。要運用Servlet偵聽器需要實現 

javax.servlet.ServletContextListener接口,同時實現它的contextInitialized   (ServletContextEvent   event)和contextDestroyed(ServletContextEvent   event)兩個接口函數。考慮定時器有個建立和銷毀的過程,看了前面兩個接口函數,就不容置疑的把建立的過程置入   contextInitialized,把銷毀的過程置入contextDestroyed了。   
  我把ServletContextListener的實現類取名為ContextListener,在其內添加一個定時器,示例代碼如下所示:   

 

package com.tjsoft.buisness.util;

 

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpServlet;

 

public class ContextListener extends HttpServlet implements
  ServletContextListener {
 /**
  *
  */
 private static final long serialVersionUID = 1L;

 

 public ContextListener() {
 }

 

 private java.util.Timer timer = null;

 

 public void contextInitialized(ServletContextEvent event) {
  timer = new java.util.Timer(true);
  event.getServletContext().log("定時器已啟動");
  timer.schedule(new ExTask(event.getServletContext()), 0, 1000*10*5);
  event.getServletContext().log("已經添加任務調度表");
 }

 

 public void contextDestroyed(ServletContextEvent event) {
  timer.cancel();
  event.getServletContext().log("定時器銷毀");
 }

 

}

以上代碼timer.schedule(new   ExTask(event.getServletContext()),   0,   60*60*1000)這一行為定時器調度語句,其中ExTask是自定義需要被調度的執行任務

ExTask.java代碼

 

package com.tjsoft.buisness.util;

 

import java.util.TimerTask;

 

import javax.servlet.ServletContext;

 

import com.tjsoft.buisness.action.ExAction;

 

public class ExTask extends TimerTask {
 private static boolean isRunning = false;
 private ServletContext context = null;

 

 public ExTask(ServletContext context) {
  this.context = context;
 }

 

 @Override
 public void run() {
  if (!isRunning) {
    isRunning = true;
    context.log("開始執行指定任務");
    new ExAction().exDate();//這個位子就是你要定時的程序的入口.
    isRunning = false;
    context.log("指定任務執行結束");
   } else {
    context.log("上一次任務執行還未結束");
   }
  }
 }

做完上面這些我們只是完了一個個定時器的設定,如果想要在tomcat啟動時就加載,必須要配置web.xml還不夠,

web.xml配置的內容如下

<listener>
  <listener-class>com.tjsoft.buisness.util.ContextListener</listener-class>
 </listener>

以上為個人在項目中所得,忘與各們共同進步O(∩_∩)O


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM