J2EE应用中任务动态调度.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
J2EE应用中任务动态调度

J2EE应用中任务动态调度   摘要:本文概括的描述了应用系统中任务调度框架的发展。从调度思想,触发模式,调度的一些基本原则等方面阐述了任务调度的体系结构及其内容。接着对其在应用中的部署进行了优化,得出了改进和优化以后的任务调度构架。最后还提出了与数据库技术相结合的技术解决方案。   关键词:任务调度;触发模式;作业储存;作业触发;作业监听   中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)06-1589-01   随着商业应用系统的不断发展,对系统的要求也越来越高,任务的调度的要求也不断的增加,出现了一系列的变化,复杂的调度条件让事件的触发也越来越繁琐。在java应用系统中,开发人员用一个标准的java API来完成这样的任务,但是它只能完成简单和少量的任务的预定。   通过java提供的标准的API来完成一个任务的定制和计划。几乎所有的商业应用都有一些报表和一些统计需要提供给用户。几乎很难想象没有这些报表这个系统会是什么样子,因为对于每一个使用这个系统的人来说,搜集大量的数据和查看这些数据将会帮助决策者去决定下一步的商业路线。一个问题是建立这些大量数据的报告让数据系统承受了巨大的压力。这种压力将会降低应用的效率,影响一些只是利用系统搜集数据并不生成报表的用户。如果考虑到系统的友好性,10分钟生成一张报表将不是一个好的表现。      1 计划执行任务的设计概念   在我们现在的应用系统中,特别是在一些大型的应用系统中,有时候需要在规定的时间或者有规律的时间间隔内执行特定的任务,这些工作量是非常的巨大,要设计出能够定时按计划执行任务的调度程序就非常的必要。它在提高应用系统的稳定性和可行型,降低成本,增加安全性方面有非常重要的意义。   随着计算机领域的不断发展,在日程处理上面出现了很,多功能强大,使用简单的代码库和插件。例如:比较流行的Quartz,Jcrontab,Gos4j,jBatchEngine等等。而Quartz在大型的应用中常常使用到,当系统运行时,可以通过定制触发器,而实现任务的动态调度。      2 任务调度的调度方式   任务调度的核心是调度器。调度器负责管理应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。任务调度不仅仅是线程和线程管理。为确保可伸缩性,任务调度采用了基于多线程的架构。   现在比较流行的调度框架Quartz,通过作业的管理,储存和调度来实现了任务的调度。任务调度包括了很多的方面[1][2]:   2.1作业管理和存储   作业一旦被调度,调度器需要记住并且跟踪作业和它们的执行次数。事实上,作业执行需要非常准确和即时调用在被调度作业上的execute()方法如下:   public void execute(JobExecutionContext context)   throws JobExecutionContext;   Quartz通过一个称之为作业存储(JobStore)的概念来做作业存储和管理。   2.2作业和触发器   触发器可以实现作业的调度。Quartz 提供了几种不同的触发器,复杂程度各不相同。SimpleTrigger和CronTrigger是常用的,SimpleTrigger为需要简单打火调度而设计。CronTrigger是基于Calendar-like调度的,同时也是基于Unix克隆表达式的。   2.3作业的监听   监听是创建的Java类,当关键事件发生时会收到框架的回调。当作业被调度、没有调度或触发器终止时,这些都可以通过设置来来通知监听器。一旦监听被调用,就能使用这个技术来做一些在监听类里面做的事情。可以将这个逻辑写进作业里面,也可以JobListener里面。写进JobListener的方式强制使用松耦合有利于设计上做到更好。   2.4有状态和无状态作业[3]   无状态的作业意味着在两次执行之间,不会去维护作业执行时JobDataMap的状态改变。如果需要能增、删,改JobDataMap的值,而且能让作业在下次执行时能看到这个状态改变,则需要用Quartz有状态作业。 而有状态带有负面含义。这主要是由于EJB带来的伸缩性问题。Quartz有状态作业实现了org.quartz.StatefulJob接口。   无状态和有状态作业的关键不同是有状态作业在每次执行时只有一个实例。大多数情况下,有状态的作业不会带来大的问题。然而,如果需要频繁执行的作业或者需要很长时间才能完成的作业,那么有状态作业可能带来伸缩性问题。      3 任务调度的改进   将任务调度部署到Web容器中的时候,这对于Web应用来说非常不利,任务调度进行异步的调度

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档