使用监听器实现Java Web的定时任务

来源:互联网 发布:监控提示无网络视频 编辑:程序博客网 时间:2024/06/13 00:48

定时器MemberMonthsListener类:

package com.yyt.interceptor.member;import java.util.Timer;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;/** * 会员月龄更新监听器 每隔一个星期执行一次 * @author Administrator * */public class MemberMonthsListener  implements ServletContextListener{ private Timer timer = null;  /**  * 监听器销毁  */@Overridepublic void contextDestroyed(ServletContextEvent arg0) {timer.cancel();System.out.println("----------------更新月龄监听器销毁---------------");}  /**   *  监听器初始化   *  java.util.Timer.schedule(TimerTask task, long delay, long period)   *  调用0表示任务无延迟   *  5*1000表示每隔5秒执行任务   *  60*60*1000表示一个小时   *  24*60*60*1000表示一天。   */@Overridepublic void contextInitialized(ServletContextEvent event) {    timer = new Timer();    new MemberTimer(event.getServletContext()).run();    System.out.println("定时器已启动,已经执行一次");          timer.schedule(new MemberTimer(event.getServletContext()),0,24*60*60*1000*7);         event.getServletContext().log("已经添加任务");          System.out.println("定时器已添加");  }}



被调用的MemberTimer类的写法,注意extends TimerTask,并且在run()方法中执行业务:

package com.yyt.interceptor.member;import java.util.TimerTask;import javax.servlet.ServletContext;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * 定时任务 * @author Administrator * */public class MemberTimer extends TimerTask{private ServletContext context = null;      public MemberTimer(ServletContext context){          this.context = context;      }  @Overridepublic void run() {ApplicationContext ac= new ClassPathXmlApplicationContext("applicationContext.xml");UpdateMember updateMember = (UpdateMember) ac.getBean("updateMember");updateMember.update();}}


最后,在web.xml中设置监听器

[html] view plain copy
  1. <listener>  
  2.   <listener-class>com.yyt.interceptor.member.MemberMonthsListener</listener-class>  
  3.  </listener>  
1 0
原创粉丝点击