下面这个类主要是定时器生效后需要执行的方法
package com.thinkgem.jeesite.modules.wx.wxTool;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContext;
public class timer extends TimerTask{
private ServletContext context = null;
public timer() {
super();
}
public timer(ServletContext context) {
this.context = context;
}
@Override
public void run() {
// TODO Auto-generated method stub
context.log("开始执行指定任务");
context.log("结束执行指定任务");
}
}
下面这个类主要是定时器的开始时间,重复执行配置
package com.thinkgem.jeesite.modules.wx.wxTool;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ContextListener implements ServletContextListener{
public ContextListener() {
}
private java.util.Timer timertime = null;
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
timertime.cancel();
arg0.getServletContext().log("销毁");
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
/**
* 设置一个定时器
*/
timertime = new java.util.Timer(true);
arg0.getServletContext().log("定时器已启动");
//设置执行时间
Calendar calendar =Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day =calendar.get(Calendar.DAY_OF_MONTH);//每天
//定制每天的12:30:00执行,
calendar.set(year, month, day, 12, 30, 00);
Date date = calendar.getTime();
int period = 24 * 60 * 60 * 1000;
//每天的date时刻执行task,每隔persion 时间重复执行
timertime.schedule(new timer(arg0.getServletContext()),date,period);
// 在 指定的date时刻执行task, 仅执行一次
// timer.schedule(new DelFileTask(arg0.getServletContext()), date);
arg0.getServletContext().log("已经添加任务调度表");
}
}
配置定时器web.xml中
<listener>
<listener-class>com.thinkgem.jeesite.modules.wx.wxTool.ContextListener</listener-class>
</listener>
说明:在哪里写的ContextListener这个类,在web.xml中就配置自己项目存在ContextListener这个类的路径。
参考文章:http://blog.csdn.net/sessionsong/article/details/50516320