博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Timer定时器时,每次重复执行了两次任务的解决方案
阅读量:7048 次
发布时间:2019-06-28

本文共 1306 字,大约阅读时间需要 4 分钟。

web.xml监听配置

com.numenzq.mc.service.impl.TimerListener

TimerListener类

public class TimerListener implements ServletContextListener {
private Timer timer;
private TimerTaskSelf task;
/**
* @see 销毁
*/
@Override
public void contextDestroyed(ServletContextEvent arg0) {
timer.cancel();
}

/** * @see 创建 */@Overridepublic void contextInitialized(ServletContextEvent event) {   timer = new java.util.Timer(true);   task = new TimerTaskSelf(event.getServletContext());   //执行任务指定间隔   timer.scheduleAtFixedRate(task, 0, 1000*60*50);  }

}

自定义任务类

package com.numenzq.mc.service.impl;

import java.util.Calendar;

import java.util.TimerTask;

import javax.servlet.ServletContext;

import org.apache.log4j.Logger;

public class TimerTaskSelf extends TimerTask {

private ServletContext context;
public TimerTaskSelf(ServletContext context){
this.context = context;
}
@Override
public void run() {
System.out.println(DateUtils.format(DateUtils.currentDate(),"yyyy-MM-dd HH:mm:ss") + " web监听结合定时器应用每次执行2次的问题...");
}
}

本地tomcat-7.0.12启动, 定时器执行没问题。

部署到服务器,linux,启动tomcat后,每次执行的时候会重复2次执行任务.

解决方案:

服务器上项目部署在tomcat的webapps文件下面,conf下的server.xml里面又配置了一句<Context .../> 指向tomcat的webapps下的项目,这样启动的时候web.xml里面的定时监听执行了2次.就是上面 那位哥哥说的 "先在contextInitialized里打印一下看看你的listern进去了几次" ,这样的情况会进去2次.

转载于:https://www.cnblogs.com/cosiray/p/5294760.html

你可能感兴趣的文章
Codeforces Round #526 (Div. 1)
查看>>
NX签名//NXOpen VB.Net / C# Sign
查看>>
Mac下安装nginx
查看>>
<转>IOS多线程
查看>>
微信服务号、订阅号和企业号的差别(运营和开发两个角度)
查看>>
AOP之AspectJ
查看>>
SHELL里执行HIVE导出文件处理成CSV文件
查看>>
Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数
查看>>
【转】生活感悟
查看>>
【leetcode】965. Univalued Binary Tree
查看>>
第十五周学习报告
查看>>
tomcat用户设置
查看>>
LINQ实现行列转换
查看>>
PHP最全笔记(五)(值得收藏,不时翻看一下)
查看>>
拦截器与过滤器的区别
查看>>
移动开发知识点收集
查看>>
smarty练习: 设置试题及打印试卷
查看>>
替换子节点时 的注意事项
查看>>
groupinfo
查看>>
Django2.1.3 smtp 邮件 553报警
查看>>