分两步走:
(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
人生的成功不过是在紧要处多一份坚持,