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

  • 相关阅读:
    MySQL手册
    字符串置换
    Java实现三角形计数
    Java实现求二叉树的路径和
    Excel催化剂开源第46波-按行列排列多个图形技术要点
    Excel催化剂开源第44波-窗体在Show模式下受Excel操作影响变为最小化解决方式
    Excel催化剂开源第45波-按原图大小导出图片
    个人永久性免费-Excel催化剂功能第105波-批量调整不规范的图形对象到单一单元格内存储
    Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
    Excel催化剂开源第43波-Excel选择对象Selection在.Net开发中的使用
  • 原文地址:https://www.cnblogs.com/longware/p/13382412.html
Copyright © 2020-2023  润新知