在web运用中指定时间自动执行任务

在web应用中指定时间自动执行任务

1、web监听器

 

package test;

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

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

public class ContextListener implements ServletContextListener {
	
	//定时器
	Timer timer = null;
	
	//销毁
	public void contextDestroyed(ServletContextEvent event) {
		timer.cancel();     
        event.getServletContext().log("定时器以销毁");

	}

	//初始化
	public void contextInitialized(ServletContextEvent event) {
		timer = new Timer();
		event.getServletContext().log("定时器已启动");
		//设置在每晚19:15分执行任务
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.HOUR_OF_DAY, 19);
		calendar.set(Calendar.MINUTE, 16);
		calendar.set(Calendar.SECOND, 0);
		Date date = calendar.getTime();
		
		timer.schedule(new Task(),date);
        event.getServletContext().log("已经添加任务调度表"); 
	}

}

 

 

2、具体任务实现类

 

package test;

import java.util.Date;
import java.util.TimerTask;
/**
 * 具体任务
 */
public class Task extends TimerTask {

	private static boolean isRunning = false;

	@Override
	public void run() {
		if (!isRunning) {
			isRunning = true;
			System.out.println("开始执行........."+new Date());
			isRunning = false;
		}else{
			System.out.println("上次任务还没执行完");
		}
	}

}

 

3、配置监听器

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<!-- 定时监听器 -->	
<listener>  
  <listener-class>test.ContextListener</listener-class> 
</listener> 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

 

 

文章来源:http://techpool.iteye.com/blog/505885