01
|
public class TimerManager
{
|
04
|
private static final long PERIOD_DAY
= 24 * 60 * 60 * 1000 ;
|
06
|
public TimerManager()
{
|
07
|
Calendar
calendar = Calendar.getInstance();
|
09
|
/***
定制每日2:00执行方法 ***/
|
11
|
calendar.set(Calendar.HOUR_OF_DAY, 2 );
|
12
|
calendar.set(Calendar.MINUTE, 0 );
|
13
|
calendar.set(Calendar.SECOND, 0 );
|
15
|
Date
date=calendar.getTime();
|
19
|
if (date.before( new Date()))
{
|
20
|
date
= this .addDay(date, 1 );
|
23
|
Timer
timer = new Timer();
|
25
|
NFDFlightDataTimerTask
task = new NFDFlightDataTimerTask();
|
27
|
timer.schedule(task,date,PERIOD_DAY);
|
31
|
public Date
addDay(Date date, int num)
{
|
32
|
Calendar
startDT = Calendar.getInstance();
|
33
|
startDT.setTime(date);
|
34
|
startDT.add(Calendar.DAY_OF_MONTH,
num);
|
35
|
return startDT.getTime();
|
在 TimerManager 这个类里面,大家一定要注意 时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后
发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执行。为了,避免这种情况
发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。
01
|
public class NFDFlightDataTimerTask extends TimerTask
{
|
03
|
private static Logger
log = Logger.getLogger(NFDFlightDataTimerTask. class );
|
11
|
log.info( "-------------解析信息发生异常--------------" );
|
16
|
public class NFDFlightDataTaskListener implements ServletContextListener
{
|
18
|
public void contextInitialized(ServletContextEvent
event) {
|
22
|
public void contextDestroyed(ServletContextEvent
event) {
|
然后要在web.xml里面配置监听器
3
|
com.listener.NFDFlightDataTaskListener
|