Java中用Servlet容器实现程序监听

分类: Jsp   出处:iocblog整理  更新时间:2008-06-24   添加到收藏  

  分两步走:
  
  (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);[iocblog.net 来源]
  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>
Tag: Servlet



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。