WEB定时器-Timer

原创 2007年09月21日 11:17:00
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了。
package com.derek.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import com.derek.pub.TimerManager;
/**
 * 启动定时器的监听器
 * 
@author derek
 * 
@version 1.0
 
*/
public class TimerListener extends HttpServlet implements
        ServletContextListener {
    
private TimerManager tm = null;
    
//Notification that the web module is ready to process requests
    public void contextInitialized(ServletContextEvent sce) {
      
int day,hour,min,sec;      
      day 
= 26; hour = 16; min = 42; sec = 0;     
      tm 
= new TimerManager(day,hour,min,sec);
    }

    
//Notification that the servlet context is about to be shut down
    public void contextDestroyed(ServletContextEvent sce) {
       tm.destoryTimer();
    }
}
package com.derek.pub;

import java.util.Timer;
import java.util.Date;
import java.util.Calendar;

/**
 * 定时器
 * 
@author derek
 * 
@version 1.0
 
*/
public class TimerManager {
    Timer t 
= null;
    
public TimerManager(int day,int hour,int min,int sec) {
        time(day,hour,min,sec);
    }
 
    
public void time(int day,int hour,int min,int sec){    
    Calendar c 
= Calendar.getInstance();
    c.set(Calendar.DAY_OF_MONTH,day);
    c.set(Calendar.HOUR_OF_DAY,hour);
    c.set(Calendar.MINUTE,min);
    c.set(Calendar.SECOND,sec);
    Date date 
= c.getTime();
    System.out.println(c.getTime());
    t
= new Timer();
    MyTask mt 
= new MyTask();
    t.schedule(mt,date);
    }
    
public void destoryTimer(){
    t.cancel();
    }
}
package com.derek.pub;
import java.util.TimerTask;
/**
 * 计划任务代码
 * 
@author derek
 * 
@version 1.0
 
*/
public class MyTask extends TimerTask{
    
public MyTask() {
    }
    
/**
     * 任务块
     
*/
    
public void run() {
        System.out.println(
"定时器RUN");
    }
}
 
 

相关文章推荐

web后台上的定时器Timer

public class Timerextends Object 一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。 void schedule(TimerTa...

java web 项目中 简单定时器实现 Timer

文章说明:http://blog.csdn.net/sessionsong/article/details/50516320Java web 项目中 简单定时器实现 Timer项目背景: 系统中有一个...

spring 对 timer 的支持---实现简单的web中定时器操作

spring 对 timer 的支持 实现简单的web中定时器操作文章分类:Java编程一共分两个步骤:1.写一个java.util.Timer的子类,实现run方法。Java代码   1. pack...

Jdk的Timer 实现定时器

  • 2012年03月25日 18:14
  • 23KB
  • 下载

java 定时器(Timer)

  • 2010年06月21日 15:54
  • 59KB
  • 下载

Java 中Timer和TimerTask 定时器和定时任务使用的例子

这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求  Timer类是用来执行任务的类,它接受一个TimerTask做参数  Timer有两种执行任务的模式,最常用的是sche...

控制台定时器Timer

  • 2009年09月18日 00:34
  • 193KB
  • 下载

DTK_Timer 定时器代码

  • 2008年09月18日 13:26
  • 232KB
  • 下载

【boost学习】之boost::asio(1)——Timer定时器

先跟着boost文档中asio章节的指南中的几个lizi
  • yockie
  • yockie
  • 2014年10月23日 09:29
  • 6591
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WEB定时器-Timer
举报原因:
原因补充:

(最多只允许输入30个字)