`
newleague
  • 浏览: 1492016 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Java中用Servlet Listener实现定时监听

阅读更多
分两步走:

    (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>


文章转载自网管网:http://www.bitscn.com/pdb/java/200904/161265.html
分享到:
评论

相关推荐

    JAVA定时执行

    总结来说,Java定时执行可以通过多种方式实现,包括`java.util.Timer`、`ScheduledExecutorService`以及在Web应用上下文中使用`ServletContextListener`。提供的文件`ReloadResourceListener.java`和`...

    java中用的各种类

    在Java Web开发中,为了追踪用户对网页的访问频率,我们可以创建一个Servlet过滤器(Filter)或监听器(Listener)。过滤器可以记录每次请求的次数,而监听器则可以在用户会话开始和结束时进行统计。通过在服务器端...

    java源码包---java 源码 大量 实例

     //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener  在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息...

    java源码包3

     //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener  在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息...

    java源码包2

     //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener  在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息...

    Tomcat中用web.xml控制Web应用详解

    Tomcat 中用 web.xml 控制 Web 应用详解 Tomcat 中 web.xml 文件是 Web 应用的核心配置文件,负责管理 Web 应用的生命周期、Servlet 的加载顺序、Filter 的配置等。下面对 web.xml 文件中的重要元素进行详细解释。 ...

    Jsp_Servlet学习课堂笔记

    6. **监听器(Listener)**:可以监听特定事件,如会话创建、销毁,或者ServletContext的初始化和销毁,实现特定的功能。 **JavaBean**是符合JavaBeans规范的Java类,通常作为可重用的组件使用,它们可以在JSP和...

    2009阿里巴巴笔试题 java

    4. Java 中用什么关键字定义常量? 答案:final 关键字用于定义常量。 5. extjs 里对一个支持事件监听的控件,取出监听器的方法有哪些? 答案:在 extjs 中,可以使用 getListeners() 方法或 getListener() 方法...

    Java EE基础实用教程 代码

    10. **Filter和Listener**:在Java EE中,Filter用于拦截和修改请求或响应,而Listener监听特定事件。`web.xml`配置文件中会有对它们的声明。 通过这些代码示例,你可以学习到如何在实际项目中使用上述Java EE技术...

    最新JAVA华为面试题

    - Timer在Java中用于定时任务,而Timespan可能是其他编程语言(如C#)中的时间跨度概念,用于表示两个时间点之间的差值。 16. **对象相等判断**: - 对象相等通常通过`equals()`方法实现,如果要比较的是基本类型...

    在WEB网站下群发邮件的例子

    为了确保邮件发送功能在Tomcat启动时自动运行,可以在`web.xml`中配置一个监听器(Listener),该监听器在应用启动时被触发,进而启动定时任务。另外,如果你的项目使用了Spring Boot,那么你可以创建一个带有`@...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener 在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被...

    java源码包4

     //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener  在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener 在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被...

    JAVA上百实例源码以及开源项目源代码

    消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener 在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被...

    javaWEB2

    Listener则是监听特定事件的发生,如session创建、销毁、请求初始化等,可用于实现一些高级功能,如登录验证、权限控制等。 7. **JNDI(Java Naming and Directory Interface)**:JNDI提供了一种统一的方式来查找...

    [JAVA网络编程 (第3版)].哈诺德.扫描版.pdf

    - **Thread类**:Java中用Thread类来表示线程,每个线程都有自己的执行路径。 - **Runnable接口**:作为线程目标对象,可以实现Runnable接口并重写run()方法来定义线程执行的任务。 - **并发工具类**:如java....

    Java常见200道面试题汇总

    - HTTP协议、Servlet、过滤器(Filter)、监听器(Listener)、MVC模式、JSP、EL表达式、JSTL标签库等。 8. **网络编程**: - TCP/IP协议栈、Socket编程、网络连接池、HTTP客户端库(HttpClient、OkHttp)。 9. ...

Global site tag (gtag.js) - Google Analytics