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

2023-11-13

  在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服务器启动的时候,任务也被启动,并且会周期性的执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Java 延迟/等待

    如何将 while 循环延迟到 1 秒间隔 而不减慢其运行的整个代码 计算机的速度到一秒延迟 只是一个小循环 Thread sleep 1000 do nothing for 1000 miliseconds 1 second
  • 为什么 [System.ComponentModel.ToolboxItem(false)] 默认出现在 Asp.net Web 服务中

    谁能告诉我为什么 System ComponentModel ToolboxItem false 是在Asp net Web服务中使用的吗 或许你可以在这里找到一些答案 NET API 浏览器 ToolboxItemAttribute 布尔
  • CSS3 与 JavaScript

    所以我试图在网页上创建一个动画 并试图找到一种使用 CSS3 来实现它的方法 但我对如何做到这一点感到非常困惑 我需要发生的是 当用户单击链接元素时 我希望 div 展开并填充特定于所单击的链接元素的内容 例如 当用户单击标题为 About
  • 如何停止抖动中的计时器?

    我在 flutter 中创建了一个计时器 一切正常 现在我不知道如何在启动计时器后关闭它 文档说你可以通过调用取消它void cancel 但我不明白其实现 我该怎么称呼它 这是正确的方法吗 static const timeout con
  • 缩小 HTML、CSS 和 Javascript 是一个坏主意吗?

    维基百科定义缩小 http en wikipedia org wiki Minification 28programming 29 as 从源代码中删除所有不必要的字符而不改变其功能的过程 这些不必要的字符通常包括空格字符 换行符 注释 有
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • 如何在 PHP Soap 客户端中禁用命名空间别名?

    我的 PHP Microsoft AX 集成有问题 我正在使用 SOAP WSDL 与服务集成 我遇到的问题是在从 PHP 向 WSDL 发送请求后收到此错误 无效的实例类型名称 ns3 AxdEntity DirParty DirOrga
  • 如何从网页中提取文本内容? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在用java开发一个应用程序 它
  • 为什么用java日历解析时会得到错误的月份

    Date fakeDate sdf parse 15 07 2013 11 00 AM Calendar calendar Calendar getInstance calendar setTime fakeDate int current
  • 使用 MediaWiki API 下载图像?

    是否可以使用 MediaWiki API 从维基百科下载图像 不 无法通过 API 获取图像 MediaWiki 中的图像仅存储在文件夹中 而不是存储在数据库中 并且不会动态传递 更多信息请参见手册 图像管理 http www mediaw
  • 使用哪个 HTTP 状态代码来拒绝由于乐观锁定失败而导致的 PUT

    假设我想实现某种乐观锁定并使用 ETag 来指示最新的资源状态 这意味着 客户将使用If Match标题时PUT等待更新 根据HTTP规范 http www w3 org Protocols rfc2616 rfc2616 sec14 ht
  • CakePHP 1.3:测量页面执行时间

    想要弄清楚如何测量 CakePHP 站点的总 PHP 执行时间 看起来在 1 2 中 它在调试模式下作为 HTML 注释包含在渲染的 HTML 中 但这在我的 1 3 网站上没有发生 无论如何我希望它作为一个可以输出给用户的元素 而不是一个
  • 设置基于 PHP 定时器的函数

    我有一个 php 文件test php 我想要echo or print5 秒后 即在浏览器调用 加载或打开 php 文件后不久 成功 顺便说一句 有时我可能想在特定的时间间隔后执行 初始化某些函数 如何使用 php 执行面向时间的任务 例
  • 如何使用 jQuery 设置计时器来发送 HTML 表单的 HTTP post 数据

    我有一个 HTML 表单 需要使用 HTTP POST 和输入数据将其发布到服务器 具体来说 我只需要发送表单中选中的所有复选框的参数值 如果用户10分钟内没有自己做 我就需要做 我不确定实现这一目标的最佳方法 但现在我正在尝试使用 jQu
  • Tulpep PopupNotifier 无法与计时器一起使用

    using System using System Data SQLite using System Drawing using System Timers using System Windows Forms using Tulpep N
  • 如何同时订阅引发的事件和打印?

    我一直在开发一个程序 该程序有 3 个类 其中 2 个类具有以不同间隔重复的计时器 一旦计时器的一个 周期 完成 它就会引发一个带有字符串作为返回的事件 第三类订阅来自其他两个计时器类的事件并将它们打印到屏幕上 效果很好 但我的问题是它是分
  • 是否可以下载网站的完整代码、HTML、CSS 和 JavaScript 文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否可以完全下载网站或查看其所有代码 例如 我知道您可以在浏览器中查看页面源代码 但是有没有办法下载所有网站代码 例如 HTML CSS
  • 在 Ruby 中创建带有静态页面的博客的最佳方法

    我刚刚访问了静态网站生成 http www ruby toolbox com categories static website generation html on 红宝石工具箱 http www ruby toolbox com 我不知
  • 一段时间后完成活动

    我正在尝试开发一个类似匹配小图片的游戏 我的问题是我想在一段时间后完成游戏 例如 在第 1 级中 我们有 10 秒的时间来匹配图片 我也想显示剩余时间 如果有任何帮助 我将不胜感激 既然你还想显示倒计时 我会推荐一个倒计时器 http de
  • flutter 中 Future.delayed 与 Timer 有什么区别

    我想知道延迟代码执行的 Future delayed 和 Timer 方法之间的区别 两者似乎都做同样的事情 未来 延迟 Future delayed const Duration milliseconds 500 code VS Time

随机推荐

  • Java比较两个对象是否相同并获得不同的字段

    在使用数据库以及做详细的权限控制的时候 遇到要比较两个对象的情况 获得两个对象是否相同以及有那些字段被修改了 以判断用户是否有权限修改对象 apache commons提供的只有collections的对比 因此 本文利用jackson将对
  • KaTeX使用

    前言 在 KaTeX KaTeX KATE X官网 有两张支持表 这里搬运过来以便于大家能够正确使用指令 这张表应该涵盖了纯 KaTeX KaTeX KATE X所有的功能 当然
  • u-boot的norflash驱动分析,以及一些调试信息

    Flash 存储器接口还有两个标准 CFI和JEDEC CFI为公共Flash接口 Common Flash Interface 用来帮助程序从Flash芯片中获取操作方式信息 而不用在程序中硬编码Flash的ID JEDEC用来帮助程序读
  • 怎么用计算机打开开发者模式,win10如何打开开发者选项模式

    我们的win10系统中自带有开发者选项模式 该模式为Win10技术预览版开发此风格应用你需要开启 开发者模式 开启之后 在将应用提交给微软进行测试和认证前 你可以先在本地计算机上进行部署和测试 为开发者们提供了自由发挥的空间 那么win10
  • Oracle date日期类型使用

    Oracle中将日期转换为字符串 需要设置日期格式 to char sysdate fmt fmt YYYY MM DD HH24 MI SS 结果 2021 03 04 19 42 50 fmt YYYY MM DD HH12 MI SS
  • 多线程-UncaughtException

    在多线程开发中 我们会面对很多的异常问题 但是 主线程的异常我们知道很方便捕获并且处理 但是对于子线程而言呢 package Thread UncaughtException program 多线程和IO descripton 传统方法无法
  • Java打印程序设计全攻略 .

    前言 在我们的实际工作中 经常需要实现打印功能 但由于历史原因 Java提供的打印功能一直都比较弱 实际上最初的jdk根本不支持打印 直到jdk1 1才引入了很轻量的打印支持 所以 在以前用Java Applet JSP Servlet设计
  • div盒模型宽高计算

    一 计算div盒模型宽高 div盒模型宽度 width 左右padding 左右border 不包含左右margin div盒模型高度 height 上下padding 上下border 不包含上下margin
  • Linux新手入门教程

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net li3839 article details 80658514 下面给你讲解新手第一次
  • 怎么看有没有用到ajax,使用AJAX请求JSON数据。我没有看到结果

    我正在学习Angular JS 为什么我看不到任何结果 使用AJAX请求JSON数据 我没有看到结果 这是我的例子 HTML post desc JS var app angular module MyApp app controller
  • discuz伪静态设置方法

    首先 进入后台 全局 SEO设置 URL静态化 如图 接着打开 查看当前的Rewrite规则 下载合适规则
  • mac上使用svn

    第一步 使用Homebrew安装subversion Homebrew不知道怎么安装的话 请自行百度 brew install subversion 第二步 使用如下的命令进行检查是否安装了这个软件 brew list 得到如下结果 使用如
  • vue常用组件库

    Vue是主流的前端框架一 Vue js UI组件 element 饿了么出品的Vue2的web UI工具套件 Vux 基于Vue和WeUI的组件库 mint ui Vue 2的移动UI元素 iview 基于 Vuejs 的开源 UI 组件库
  • 32黑马QT笔记之QPixmap和QImage的相互转换

    32黑马QT笔记之QPixmap和QImage的相互转换 1 QPixmap与QImage的互相转换 1 头文件 void paintEvent QPaintEvent 2 实现 cpp文件 void Widget paintEvent Q
  • 敏捷开发系列终极之旅 第六站(像橄榄球运动一样富有激情的SCRUM)

    由来 为什么是Scrum Scrum原本的意思是橄榄球运动的一个专业术语 指 在橄榄球比赛中 双方前锋站在一起紧密相连 当球在他们之间投掷时他们奋力争球 在敏捷开发系列中 把一种开发流程命名为Scrum 其实就意味着 这种敏捷开发的流程 就
  • 解决Android手机root仍然出现adbd connot run as root in production build

    对于手机已经root 但是使用 adb root命令仍然出新adbd connot run as root in production build 原因是手机固件里面设置了adb shell 禁止root 解决方法 下载文件 http do
  • Linux文件、磁盘管理的一些命令:

    Linux文件 磁盘管理的一些命令 Num01 gt ls ls 列出目录的内容 linux文件或目录名称英文最长可有255个字符 中文最长127个字符 表示当前目录 以 开头的文件为隐藏文件 需要以 a参数才能显示 表示上级目录或父目录
  • Training a deep autoencoder or a classifier on MNIST digits_之调试运行与理解

    运行这个程序的主要目的 深入理解deep autoencoder 的基本原理和基本架构 搞明白是如何搭建起来的 弄清它是如何训练学习的 又是如何提取目标的特征的 最终又是怎样分类的 代码主程序如下 mnistdeepauto m plain
  • PHP计算时间差

    时间计算 距离现在多长时间 function format date time t time time f array 31536000 gt 年 2592000 gt 个月 604800 gt 星期 86400 gt 天 3600 gt
  • Web应用下实现定时任务简便方法

    在WEB应用下实现定时任务的简便方法 在web方式下 如果我们要实现定期执行某些任务的话 除了用quartz等第三方开源工具外 我们可以使用Timer和TimeTask来完成指定的定时任务 第一步 创建一个任务管理类 实现ServletCo