定時器GoogleListener類:
import java.util.Timer;//定時器類
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import cn.edu.KFC.bean.GoogleTimer;
public class GoogleListener implements ServletContextListener {
private Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
// 在這裡初始化監聽器,在tomcat啟動的時候監聽器啟動,可以在這裡實作定時器功能
timer = new Timer(true);
// 添加日志,可在tomcat日志中檢視到
event.getServletContext().log("定時器已啟動");
System.out.println("定時器已啟動");
// 調用GoogleTimer,0表示任務無延遲,5*1000表示每隔5秒執行任務,60*60*1000表示一個小時,24*60*60*1000表示一天。
timer.schedule(new GoogleTimer(event.getServletContext()), 0, 2 * 60 * 1000); //每2分鐘執行一次GoogleTimer類
event.getServletContext().log("已經添加任務");
System.out.println("定時器已添加");
}
public void contextDestroyed(ServletContextEvent event) {// 在這裡關閉監聽器,是以在這裡銷毀定時器。
timer.cancel();
event.getServletContext().log("定時器銷毀");
}
}
被調用的GoogleTimer類的寫法,注意extends TimerTask,并且在run()方法中執行業務:
import java.util.Calendar;
import java.util.TimerTask;
import javax.servlet.ServletContext;
import cn.edu.KFC.bean.GoogleAnalytics;
public class GoogleTimer extends TimerTask{
private ServletContext context = null;
GoogleAnalytics ga = new GoogleAnalytics();
public GoogleTimer(ServletContext context){
this.context = context;
}
public void run(){
ga.myTest();
}
}
最後,在web.xml中設定監聽器
<listener>
<listener-class>cn.edu.KFC.bean.GoogleListener</listener-class>
</listener>