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 >
目录
相关文章
|
Java 调度
Java实现定时启动,且只执行一次,如何实现?
【10月更文挑战第18天】Java实现定时启动,且只执行一次,如何实现?
978 3
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
362 33
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
448 13
|
Java Spring
Java Spring Boot监听事件和处理事件
通过上述步骤,我们可以在Java Spring Boot应用中实现事件的发布和监听。事件驱动模型可以帮助我们实现组件间的松耦合,提升系统的可维护性和可扩展性。无论是处理业务逻辑还是系统事件,Spring Boot的事件机制都提供了强大的支持和灵活性。希望本文能为您的开发工作提供实用的指导和帮助。
479 15
|
Java 开发者 Spring
Java Springboot监听事件和处理事件
通过这些内容的详细介绍和实例解析,希望能帮助您深入理解Spring Boot中的事件机制,并在实际开发中灵活应用,提高系统的可维护性和扩展性。
889 7
|
监控 Java
Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
【10月更文挑战第13天】Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
547 1
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
275 1
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
512 1
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
230 1
|
存储 运维 Java
函数计算产品使用问题之怎么配置定时触发器来调用Java函数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。