分两步走:
(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中加入监听语句:
闽公网安备 35060202000074号