Java:Web应用下实现定时任务的简便方法

web|定时

  在WEB应用下实现定时任务的简便方法

  在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务:

  第一步:创建一个任务管理类,实现ServletContextListener 接口

public class TaskManager implements ServletContextListener {
 /**
  * 每天的毫秒数
  */
 public static final long PERIOD_DAY = DateUtils.MILLIS_IN_DAY;
 /**
  * 一周内的毫秒数
  */
 public static final long PERIOD_WEEK = PERIOD_DAY * 7;
 /**
  * 无延迟
  */
 public static final long NO_DELAY = 0;
 /**
  * 定时器
  */
 private Timer timer;
 /**
  * 在Web应用启动时初始化任务
  */
 public void contextInitialized(ServletContextEvent event) {
        //定义定时器
  timer = new Timer("数据库表备份",true);
  //启动备份任务,每月(4个星期)执行一次
  timer.schedule(new BackUpTableTask(),NO_DELAY, PERIOD_WEEK * 4);
//  timer.schedule(new BackUpTableTask(),NO_DELAY, 30000);
 }
 /**
  * 在Web应用结束时停止任务
  */
 public void contextDestroyed(ServletContextEvent event) {
  timer.cancel(); // 定时器销毁
 }
}

  第二步:创建一个时间任务类

public class BackUpTableTask extends TimerTask {
 private static Log log = LogFactory.getLog(BackUpTableTask.class);
 private static boolean isRunning = false;
 public void run() {
  if (!isRunning) {
   isRunning = true;
   log.debug("开始执行任务..."); //开始任务
   //working  add what you want to do
   log.debug("执行任务完成..."); //任务完成
   isRunning = false;
  } else {
   log.debug("上一次任务执行还未结束..."); //上一次任务执行还未结束
  }
 }
}

  第三步:在web中添加一个监听器

 <listener>
  <listener-class>***.TaskManager</listener-class>
  <description>要定期执行的任务</description>
 </listener>

  那么在web服务器启动的时候,任务也被启动,并且会周期性的执行

时间: 2024-12-24 21:39:11

Java:Web应用下实现定时任务的简便方法的相关文章

Java知识:Web应用下实现定时任务简便方法

web|定时 在WEB应用下实现定时任务的简便方法 在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务: 第一步:创建一个任务管理类,实现ServletContextListener 接口 以下是引用片段: public class TaskManager implements ServletContextListener { /** * 每天的毫秒数 */ public static final

Java在Web应用下实现定时任务简便方法

在WEB应用下实现定时任务的简便方法 在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务: 第一步:创建一个任务管理类,实现ServletContextListener 接口 以下是引用片段: public class TaskManager implements ServletContextListener { /** * 每天的毫秒数 */ public static final long P

Java Web开发项目中中文乱码解决方法汇总_java

Java Web项目中,解决中文乱码方法总结如下 第一种情况:调用jsp页面中文显示乱码问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码. 解决方法:首先确认本jsp在编辑器中保存文件内容时,使用的是utf-8的编码格式,然后在jsp页面的开始处添加<%@ pageEncoding="utf-8"%>就可以解决这种中文乱码问题 第二种情况:调用servlet页面显示乱码问题描述:通过浏览器调用servlet,servlet在浏览器中显示的内容出现乱码.

Java Web程序实现返回JSON字符串的方法总结_java

基础铺垫在java中,关于json的lib有很多,比如jackjson.fastjson.gson等等,本人都用过,但是对于我等只需要让java对象返回json字符串即可的程序员来说,还是显得过于繁重.而且有些功能定制性很差,比如一个java对象的属性为空时,这些组件都不会输出,于是本人在页面循环遍历列表对象时,总是得判断此属性是否为undefined,这一点让本人很不满意.所以决定花点时间研究下到底是怎么回事. 但经过一上午的细看,发现不管是fastjson还是gson都代码都写得相当的复杂,

Eclipse里web的依赖工程部署的简便方法

用Eclipse开发项目,曾经为依赖工程的部署问题头疼过,用了MyEclipse之后就没有仔细去研究,最近研究了下,还真找到了比较简便的方法,之前都是采用Ant打jar包,copy到web工程,或者通过Link Source,直接把依赖工程编译到web工程下边,但这样感觉总不是个长久之计,因为前者每次编译都要打包太过麻烦,后者需要指定依赖工程的源文件磁盘地址,对于团队成员来说地址不一定统一,所以就仔细的翻了下Eclipse,发现了J2EE Module Dependencies,恍然大悟,这不正

Java Web項目中,如下Action方法,哪些是HardCode ?

问题描述 Hello,各路大俠,小弟最近做一個JavaWeb應用項目.请教如下一个Action代码中哪些是HardCode,作为程序员有什么比较好的方法避免这些HardCode?例如具体需求如下:用户将查询到的有效记录,选中其中部分或者全部记录,将之变成无效;查询无效记录,选择其中部分或者全部,将之变成有效.备注:activeFlag=1表示Active,activeFlag=0表示Inactive.publicvoidexecStatusUpdate(ModelAndViewmav,FormB

一种新的攻击方法——Java Web表达式注入

0×00 引言在2014年6月18日@终极修炼师曾发布这样一条微博:498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="width: 477px; height: 446px" border="0" alt="新攻击方法--Java Web Expression Language Injection" src="http://s5.51cto.

java在Linux下的web应用(一)

java在Linux下的web应用(一) 在RedHat下安装apache jserv 1.1.2 虽然apache jserv的开发小组现在都从事tomcat的开发,而且apache jserv只支持servlet 2.0 的标准,并且要加其他的软件(gnujsp)才能支持jsp;但是apache jserv在现阶段比tomcat稳定, 因此现在apache jserv+gnujsp比较适合应用于web.如果想使用servlet2.2和jsp1.1的话,请 使用tomcat,参看tomcat的

有遇到过同一个html网页放到java web下,再通过超链接跳转打开该页,就变形了的吗?

问题描述 有遇到过同一个html网页放到java web下,再通过超链接跳转打开该页,就变形了的吗? 问题是同一个网页,代码完全一样,为什么会变形,完全搞不懂.(不是CSS路径之类的问题)