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>

  • 相关阅读:
    LR通过SiteScope监控mysql
    安装apk文件报waiting for device 时解决办法
    VMware虚拟机中设置端口映射(转载)
    Android模拟器中安装APK文件(转)
    netstat监控大量ESTABLISHED连接与Time_Wait连接问题(转载)
    linux 安装sysstat使用iostat、mpstat、sar、sa(转载)
    SQL联合查询中的关键语法(转)
    JVM调优总结 -Xms -Xmx -Xmn -Xss(转载)
    JVM系列三:JVM参数设置、分析(转载)
    查找进程并杀进程的命令
  • 原文地址:https://www.cnblogs.com/longware/p/13382412.html
Copyright © 2011-2022 走看看