1. 程式人生 > >Servlet監聽器與Timer定時器配合實現JAVA WEB應用簡單自動作業

Servlet監聽器與Timer定時器配合實現JAVA WEB應用簡單自動作業

       在web應用中,有時候客戶需要一些定時程式,不需要客戶自己去操作,而是由應用程式自行觸發執行某些操作。這個時候監聽與定時器的配合使用就基本可以實現這個需求了。

 1.建立一個監聽的SERVELET,這個類繼承javax.servlet.http.HttpServlet並且實現javax.servlet.ServletContextListener。

package com.bndz.outMail;

import java.util.Timer;

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

/**
  * 
  * 檔案傳送的監聽 需要再WEB-XML中配置
 */
public class MailSendListener extends HttpServlet implements
   ServletContextListener {

 /**
   * 監聽開始銷燬
  */
  public void contextDestroyed(ServletContextEvent sce) {

 }

 /**
   * 監聽開始執行
  */
  public void contextInitialized(ServletContextEvent sce) {

  // 當監聽開始執行時,設定一個TIME
   Timer timer = new Timer();
   System.out.println("-------MailSend   Timer開始進行執行--------------");
   MailSendTask msendTask = new MailSendTask();
   timer.schedule(msendTask, 60 * 1000, 10 * 1000);
   System.out.println("-------MailSend   Timer已經在執行--------------");
  }
 }



2.配置WEB.XML檔案,用於進行配置。

  <listener>
     <listener-class>com.bndz.outMail.MailSendListener</listener-class>
   </listener>


3.建立一個MailSendTask,繼承java.util.TimerTask,在RUN方法裡面進行程式的執行。

package com.bndz.outMail;

import java.util.Date;
import java.util.TimerTask;

/**
  * JAVA 一個定時任務
 * 
  * @author Guox2011-05-10
  * 
  */
 public class MailSendTask extends TimerTask {

 public MailSendTask() {

 }

 /**
   * RUN方法放入一個SCHEDULE的時候 進行執行 一個定時程式執行的進口
  */
  public void run() {

  System.out.println(new Date()+ "---MailSendTask begin to RUN ------------");
   MailSendManager mainSendManager = new MailSendManager();
   mainSendManager.waitingMailRemind();
  }

}

4.在監聽SERVELET的的contextInitialized方法中,來寫一個TIMER;讓其SCHEDULE方法執行上面所描寫的MailSendTask任務。

 // 當監聽開始執行時,設定一個TIME
  Timer timer = new Timer();
   System.out.println("-------MailSend   Timer開始進行執行--------------");
   MailSendTask msendTask = new MailSendTask();
  timer.schedule(msendTask, 60 * 1000, 10 * 1000);
   System.out.println("-------MailSend   Timer已經在執行--------------");