Web中的定时操作

原创 2007年09月19日 10:41:00
Web中的定时操作

1 什么是定时操作
    有些时候我们想做一些在将来的事件内发生的事情的预订,例如,9月18号自动弹出警告,每周五自动查毒等,这都叫做定时操作。

2 普通的定时操作
    在普通的开发环境中,定时操作的处理非常简单,可以使用操作系统自带的task功能来完成。当然最多还是做一个服务,服务中做一个定时器Timer对象,每当Timer被触发的时候做一些相关的操作。

3 Web中的定时操作
常见的Web定时操作,以定时发送mail为例,假如系统要求能够向系统输入一个特定的将来的事件,在这个事件我们向对应的目标mail地址发送一封按照某个模板生成的mail。我们这里不分析发送mail的细节,我们只讨论怎么定时的发送mail。

3.1 Web应用程序的特点
Web应用程序运行在一个特定的web容器中,例如Tomcat或者Websphere,我们这里不WebSphere,Weblogic这些重量级的服 务器,应为这些服务器已经提供了功能非常强大的定期功能,只需要你去看文档照着操作就好了,这里我们主要讲解如何在开源类库的支持下完成这些操作。
上面说了Web应用程序运行在Web容器中,那么Web容器停止服务器之后,Web应用程序也就停止了,所以定时器不需持久化,即定发生的任务必须保存在数据库中。
我们回头考虑上面提到的定时发送mail的需求,那么就必须讲定时发送mail的记录保存在数据库中,那么需要把那些跟定时操作相关的信息保存在数据库中 呢?首先肯定是定时发送mail的时间,这个是肯定的,但是还有没有其他内容呢,对了,还需要一个关联的信息,如何通过这个定时记录联系到具体的业务。例 如这里需要有一个客户id字段,这样子才能联系到对应的客户。

3.2 如何定时发送
Web应用程序有一些特殊的接口,例如:Listener,这个接口的实现类在Web应用程序启动的时候会第一时间启动,而不需要用户通过IE等浏览器点 击操作。所以这个类是启动Timer的最佳位置。那么Timer其中之后放在哪里呢?放在Web应用程序的一个叫做Application的范围之内 (ServletContext Scope)。定时器设定完成了,这样你就可以在用户每次定义定时发送Mail的时候将定时信息放在数据库中即可,Timer会自动的遍历数据库中的内 容,发现事件匹配的时候就会调用具体的操作。

已有的Job Scheduler框架:
例如Quartz (http://www.opensymphony.com/quartz/)

 

IE 下VML动画的奇怪现象:GWTCanvas基于定时器的图形动画当鼠标移动时停止动画效果(直接用VML写代码效果也一样)

问题描述:在IE下做VML动画,动画会因为鼠标不停移动而停止(只要面积较大)。即使绘制非常简单的图形(但是面积较大),这种情况也会发生。鼠标不动就不会发生。 软硬件情况:IE或以IE为核的浏览器,我的...
  • revv
  • revv
  • 2008年12月04日 15:08
  • 1299

Struts2 Spring 定时器

1.applicationContext-timer.xml http://www.springframework.org/schema/beans"  xmlns:xsi="http://w...
  • IamstudyingJava
  • IamstudyingJava
  • 2014年02月12日 16:22
  • 4964

定时任务服务开发笔记(1)——Quartz2+Spring3+Struts2整合

一转眼又有半年多没有更新了,我对于记录总缺少一些恒心。 这次是在公司有自己的需求,想要开发一个定时执行相应任务的服务,由于这方面平时比较少接触,很容易忘记,就稍微记录一下开发的过程吧。 计划中是使...
  • zijia889149650
  • zijia889149650
  • 2016年06月05日 01:00
  • 1319

【Spring】定时任务详解实例-@Scheduled

首先当然是在Spring的xml配置文件加入task的命名空间xmlns:task="http://www.springframework.org/schema/task"还需要在xsi:schema...
  • Marvel__Dead
  • Marvel__Dead
  • 2017年06月14日 21:28
  • 878

java web 项目中 简单定时器实现 Timer

java web 项目中 简单定时器实现 Timer 项目背景: 系统中有一个存放压缩文件的临时文件夹。当时间长了后 存放文件多了,占用磁盘空间过大 让费资源, 所以需要定期去清理临时文件夹下的文...
  • sessionsong
  • sessionsong
  • 2016年01月14日 17:28
  • 8359

H5页面中的定时器(setTimeout)问题

项目的安卓版本为了快速开发,使用Hbuilder纯H5开发.关于setTimeout碰到的几个问题. 1.页面中设置的10s定时请求服务器一次,但是服务器打出的日志,可以看到,个别时候,两次请求几乎...
  • yunzhonghefei
  • yunzhonghefei
  • 2016年11月29日 09:45
  • 2439

H5页面定时器

做活动时,需要的定时器js写法 引入layer弹框提示 function checkedTime(){ var startTime = new Date().formatTimestamp...
  • weixin_41308566
  • weixin_41308566
  • 2017年12月22日 18:42
  • 74

h5 canvas画布、setInterval定时器、addEventListener事件

事件: 一个事件可以分为以下几点: 事件源、事件名、事件的注册、事件的处理。 西点发生火灾事件 事件源是西点 事件名:火灾 事件的注册:西点归大桥站消防武警管理,这个管理是在发生事件前就分...
  • huxia4815
  • huxia4815
  • 2017年11月26日 17:11
  • 231

JAVA web实现可控制定时器

这里自己写了个Timer能同样达到一样的要求!而且可以自己控制 启动或关闭,而且可以设置1天内在6,9,12点执行该定时器,感觉挺好用的...
  • qilin001cs
  • qilin001cs
  • 2016年05月06日 18:28
  • 1102

web定时任务实例

定时任务很常用,在此写个例子做一下展示。 例子很简单,利用servlet的load-on-startup配置在init方法中启动一个定时器。 在需要的时间点启动任务即可。   web.xml配...
  • lushuaiyin
  • lushuaiyin
  • 2013年08月18日 20:47
  • 2257
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Web中的定时操作
举报原因:
原因补充:

(最多只允许输入30个字)