转载自:http://www.zjsyc.com/blog/article/J2EE/318.html
分两步走:
(1)实现 javax.servlet.ServletContextListener 接口的两个方法:contextInitialized()和contextDestroyed()
contextInitialized():当Servlet容器启动时会执行contextDestroyed():当Servlet容器停止时会执行
(2)在contextInitialized()中加入需要监听的程序,并由 java.util.Timer 的 schedule() 方法来控制监听程序执行的频率
DEMO(这是我的一个短信回复监听的程序原型,精简了一下)
----------------------------------------------------------------
ReplyListener.java
----------------------------------------------------------------
packagecom.hanweb.jcms;
importjavax.servlet.*;
publicclassReplyListenerimplementsServletContextListener{
privateReplyTimer rt=null;
publicvoidcontextInitialized(ServletContextEvent event){
String status="[SYS] SMS reply listener start .";
event.getServletContext().log(status);
System.out.println(status);
rt=newReplyTimer(1);
rt.start();
}
publicvoidcontextDestroyed(ServletContextEvent event){
String status="[SYS] SMS reply listener stop .";
event.getServletContext().log(status);
System.out.println(status);
if(rt!=null){
rt.stop();
}}}
----------------------------------------------------------------ReplyTimer.java----------------------------------------------------------------
packagecom.hanweb.jcms;
importjava.util.*;
publicclassReplyTimer{
privatefinalTimer timer=newTimer();
privatefinalintmin;
publicReplyTimer(intminutes){
min=minutes;
}
publicvoidstart(){
Date date=newDate();
timer.schedule(newReplyTask(), date, min*60*1000);
}
publicvoidstop(){
timer.cancel();
}}
----------------------------------------------------------------ReplyTask.java----------------------------------------------------------------
packagecom.hanweb.jcms;
importjava.util.*;
publicclassReplyTaskextendsTimerTask{
publicvoiddoSomething(){
System.out.println("[SYS] SMS reply listener running");
}
publicvoidrun(){
doSomething();
}}
将编译好的class文件放入WEB-INF/classes中,最后别忘记了在Servlet容器中当前WEB应用的web.xml中加入监听语句:
com.hanweb.jcms.ReplyListener