Java中用Servlet Listener实现定时监听 (Timer、TimerTask)

简介:

分两步走:

    (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 >
目录
相关文章
|
1月前
|
Java 调度
Java实现定时启动,且只执行一次,如何实现?
【10月更文挑战第18天】Java实现定时启动,且只执行一次,如何实现?
189 3
|
1月前
|
监控 Java
Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
【10月更文挑战第13天】Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
106 1
|
1月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
62 1
|
1月前
|
Java C#
Java的监听处理事件--小球移动案例
Java的监听处理事件--小球移动案例
13 0
|
3月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
36 3
|
3月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
34 1
|
3月前
Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter
Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter
66 3
|
3月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
55 0
|
3月前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
29 0
|
3月前
|
存储 运维 Java
函数计算产品使用问题之怎么配置定时触发器来调用Java函数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
下一篇
无影云桌面