程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中用Servlet Listener實現定時監聽

Java中用Servlet Listener實現定時監聽

編輯:關於JAVA

分兩步走:

(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中加入監聽語句:

<listener>
  <listener-class>com.hanweb.jcms.ReplyListener</listener-class>
  </listener>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved