分兩步走:
(1). 實現 Javax.servlet.ServletContextListener 接口的兩個方法:contextInitialized()和contextDestroyed()
contextInitialized():當Servlet容器啟動時會執行
contextDestroyed():當Servlet容器停止時會執行
(2). 在contextInitialized()中加入需要監聽的程序,並由 Java.util.Timer 的 schedule() 方法來控制監聽程序執行的頻率
DEMO(這是我的一個短信回復監聽的程序原型,精簡了一下)
----------------------------------------------------------------
ReplyListener.Java
----------------------------------------------------------------
package com.hanweb.jcms;
import Javax.servlet.*;
public class ReplyListener implements ServletContextListener {
private ReplyTimer rt = null;
public void contextInitialized(ServletContextEvent event) {
String status = "[SYS] SMS reply listener start .";
event.getServletContext().log(status);
System.out.println(status);
rt = new ReplyTimer(1);
rt.start();
}
public void contextDestroyed(ServletContextEvent event) {
String status = "[SYS] SMS reply listener stop .";
event.getServletContext().log(status);
System.out.println(status);
if (rt != null) {
rt.stop();
}
}
}
----------------------------------------------------------------
ReplyTimer.Java
----------------------------------------------------------------
package com.hanweb.jcms;
import Java.util.*;
public class ReplyTimer {
private final Timer timer = new Timer();
private final int min;
public ReplyTimer(int minutes) {
min = minutes;
}
public void start() {
Date date = new Date();
timer.schedule(new ReplyTask(), date, min * 60 * 1000);
}
public void stop() {
timer.cancel();
}
}
----------------------------------------------------------------
ReplyTask.Java
----------------------------------------------------------------
package com.hanweb.jcms;
import Java.util.*;
public class ReplyTask extends TimerTask {
public void DOSomething() {
System.out.println("[SYS] SMS reply listener running ");
}
public void run() {
DOSomething();
}
}
將編譯好的class文件放入WEB-INF/classes中,最後別忘記了在Servlet容器中當前WEB應用的web.XML中加入監聽語句:
com.hanweb.jcms.ReplyListener