Java中用Servlet容器實現程式監聽
來源:互聯網
上載者:User
servlet|程式
分兩步走:(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>