zoukankan      html  css  js  c++  java
  • Java中用Servlet容器实现程序监听

    分两步走:
    (1). 实现 javax.servlet.ServletContextListener 接口的两个方法:contextInitialized()contextDestroyed()
     contextInitialized():当Servlet容器启动时会执行
     contextDestroyed():当Servlet容器停止时会执行
    (2). 在contextInitialized()中加入需要监听的程序,并由 java.util.Timerschedule() 方法来控制监听程序执行的频率

    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>

  • 相关阅读:
    线行代数的本质-通俗易懂的讲解
    线行代数的本质-通俗易懂的讲解
    Java学习——Applet菜单
    Java学习——Applet菜单
    Java学习——用户电话输入显示
    Java学习——用户电话输入显示
    Java学习——多线程例子:银行
    Java学习——多线程例子:银行
    畅通project
    IOS写一个能够支持全屏的WebView
  • 原文地址:https://www.cnblogs.com/longware/p/13382412.html
Copyright © 2011-2022 走看看