Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 793|回复: 0

tomcat 定时器 timer 实例

[复制链接]

该用户从未签到

发表于 2011-10-12 10:48:56 | 显示全部楼层 |阅读模式
经过查阅较多相关资料,发现java定时器(java.util.Timer)有定时触发计划任务的功能,

通过配置定时器的间隔时间,在某一间隔时间段之后会自动有规律的调用预先所安排的计划任务

(java.util.TimerTask)。另外,由于我们希望当Web工程启动时,定时器能自动开始计时,

在整个Web工程的生命期里,定时器能在每晚深夜触发一次报表计算引擎。

因此定时器的存放位置也值得考查,不能简单的存在于单个Servlet或JavaBean中,

必须能让定时器宿主的存活期为整个Web工程生命期,在工程启动时能自动加载运行。

结合这两点,跟Servlet上下文有关的侦听器就最合适不过了,通过在工程的配置文件中加以合理配置,

会在工程启动时自动运行,并在整个工程生命期中处于监听状态。
......下面就Servlet侦听器结合Java定时器来讲述整个实现过程。

要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,

同时实现它的contextInitialized(ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数。

考虑定时器有个建立和销毁的过程,看了前面两个接口函数,

就不容置疑的把建立的过程置入contextInitialized,把销毁的过程置入contextDestroyed了。

1、计时器类:

package myPackage;

import java.util.Timer;
import java.util.TimerTask;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class TimerTest implements ServletContextListener{

private Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
  timer = new Timer(true);
  event.getServletContext().log("定时器已启动");
  timer.schedule(new TimerTask(){
       public void run(){

  //此处可以调用所需业务代码
        System.out.println("上次执行时间:"+ this.scheduledExecutionTime());
       }
      }, 0, 10*1000);
  event.getServletContext().log("已经添加任务调度表");
}
public void contextDestroyed(ServletContextEvent event) {
  timer.cancel();
  event.getServletContext().log("定时器销毁");
}  

}

2、编写完计时器类,最后一步就是把ServletContextListener部署到您的Web工程中去,

在您工程的web.xml配置文件中加入如下三行:

<listener>
    <listener-class>myPackage.ContextListener</listener-class>
</listener>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-11 18:21 , Processed in 0.426297 second(s), 48 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表