Servlet監聽器與Timer定時器配合實現JAVA WEB應用簡單自動作業
阿新 • • 發佈:2019-01-07
在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已經在執行--------------");