quartx

Struts 2 的专栏

很高兴能够帮助大家!

分类: Struts2 2007-09-19 10:41 2435人阅读 评论(1) 收藏 举报
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/)

分享到:
查看评论
1楼   ljdbluesky 2011-09-22 16:42发表[回复]
再详细点更好了
您还没有登录,请 [登录][注册]
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
  • 个人资料

  • struts2
    • 访问:330889次
    • 积分:3774分
    • 排名:第716名
    • 原创:100篇
    • 转载:1篇
    • 译文:1篇
    • 评论:255条
  • 求关注
  • 评论啦!
  • 文章搜索
  • 最新评论
 
公司简介| 招贤纳士| 广告服务| 银行汇款帐号| 联系方式| 版权声明| 法律顾问| 问题报告
北京创新乐知信息技术有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
江苏乐知网络技术有限公司 提供商务支持
 Email:webmaster@csdn.net
Copyright © 1999-2011, CSDN.NET, All Rights Reserved
GongshangLogo








需要这个:quartz-1.6.2.jar下面是触发器配置文件,把该文件引用到application.xml:<?xml version="1.0" encoding="UTF-8"?><beans        xmlns="http://www.springframework.org/schema/beans"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">        <!-- 定时器配置 --><!-- 配置定时器类 -->  <bean id="triggerUtil" class="com.pro.base.util.TriggerUtil" >  </bean>  <!-- 指定任务(方法) -->  <bean id="expDataBaseJob"        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">        <property name="targetObject">                <ref local="triggerUtil" />        </property>        <property name="targetMethod">                <value>expDataBase</value>        </property>  </bean>  <!-- 设定计划执行时间 -->  <bean id="expDataBaseTrigger"        class="org.springframework.scheduling.quartz.CronTriggerBean">        <property name="jobDetail">                <ref local="expDataBaseJob" />        </property>        <property name="cronExpression">                <value>00 33 21 * * ?</value>        </property>        </bean>        <!-- 任务执行器配置 -->        <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">                <property name="triggers">                        <list>                                <ref local="expDataBaseTrigger" />                        </list>                </property>        </bean></beans>Java类:public class TriggerUtil {        @Resource(name = "basicService")        private BasicService service;  //数据库操作服务        private TriggerUtil(){                        }                public void expDataBase(){                System.out.println("trigger actived........");                System.out.println("=========================="+service+"");                String command="exp ";        }                public BasicService getService() {                return service;        }        public void setService(BasicService service) {                this.service = service;        }} 
 
  
 
  
 
  
http://zhidao.baidu.com/question/323394715.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值