DWR与Quartz在WEB工程中的综合应用

2014-11-04 15:59葛万标李江冰
电脑知识与技术 2014年28期

葛万标 李江冰

摘要:随着WEB工程的应用,在使用的过程中会遇到大量的数据或者文件的生成,同时在处理数据或者文件的时候,需要动态的展示处理的结果,这就增加了WEB工程的复杂性和难度.异步处理数据的DWR框架和Quartz定时调度有效的解决了这一问题.本文简要阐述Quartz与DWR的原理以及在WEB工程中的综合应用。

关键词: DWR;Quartz;WEB工程

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)28-6761-03

在WEB工程中,为了提高整个应用的功能性问题,有些工作需要间隔一段时间去执行,并且需要将执行的结果呈现出来,将处理的过程动态的加载,提高工作效率,同时也增加客户的友好性体验,以文件的生成为例,Quartz主要是负责定时调度任务创建文件,DWR框架用来获取处理结果,并给出提示信息.

1 Quartz与DWR的原理

1.1 Quartz作業调度框架

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序.Jobs可以做成标准的Java组件或 EJBs.

Quartz提供了强大任务调度机制, 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射.提供了调度运行环境的持久化机制,可以保存并恢复调度现场,即使系统因故障关闭,任务调度现场数据并不会丢失.

Quartz的几个核心概念:

CronTriggerBean:调度触发器:触发器定义了对作业的调度,一旦被调用就会根据cron表达式里面的设置对作业进行调度.cron表达式包括以下7个字段:秒、分、小时、月内日期、月、周内日期、年(可选字段),主要设置作业运行的时间

MethodInvokingJobDetailFactoryBean:作业工厂.触发的具体的作业执行的方法, 在具体执行待调度任务的method前后加入公用逻辑,比如记录开始、结束日期、判断该task是否由该台服务器执行、任务执行完成之后将运行结果进行持久化或者发email等

SchedulerFactoryBean:调度器.调度器可以包含具体的JobDetail+CronTrigger的组合,其中一个JobDetail可以和多个CronTrigger关联

1.2 DWR框架

DWR是一个便于从JavaScript调用Java函数和从Java调用JavaScript函数远程过程调用协议,它可以允许运行在浏览器中的代码执行WEB服务器上的代码,用JavaScript脚本语言直接调用后台业务商业组件的解决方案,采用无刷新页面的方式从远程服务端获取数据,不仅提高页面的响应时间,而且也不会影响到用户因为刷新页面带来的心理感觉.

DWR采用纯JavaScript在浏览器中实现,并且会根据浏览器类型采用最高的执行效率的远程调用机制,同时WEB开发人员必须配置哪些JAVA类可以安全的被外部使用

2 在WEB工程中的综合应用

2.1配置调度任务

<!—lazy-init设置为false表明容器启动就会自动加载—>

<!—可以定义多个调度触发器—>

<!— 定时生成文件 —>

<!—createFilesActuatorBean为具体的方法—>

<!— 每隔30秒执行一次 创建文件 —>

2.2 DWR配置(导入相应的jar包)

在web.xml里面配置,配置文件如下

dwr-invoker<!—定义的servlet的名称 —>

org.directwebremoting.servlet.DwrServlet<!—具体的servlet的类—>

<!—初始化参数—>

debugtrue<!—默认该参数为false,修改为true可以进行调试,调试格式:http://ip:port/app-name/dwr,可以看到所有的DWR的类信息 —>

crossDomainSessionSecurityfalse<!—默認设置为true,设置为false表示可以从其他域进行请求 —>

}}});

}

<%— 启动页面定时任务(创建文件) —%>

function startTaskCreateFile(){

timerTask = setInterval("checkCreateFileStatus()",taskPeriod*1000);

}