Java中用ServletListener实现定时监听

分两步走:

(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  

人生的成功不过是在紧要处多一份坚持,

Java中用ServletListener实现定时监听

相关文章:

你感兴趣的文章:

标签云: