Quartz Job Scheduling Framework[翻译]第十三章. Quartz 和 Web 应用 (第五部分)

六. 介绍 Quartz Web 程序

早期的 Quartz 框架开发者意识到一个 GUI 对于某类用户群体是必需的。几年前,一个 Web 应用被创立,它可用于管理 Quartz 框架。虽说是历经了几年有相当投入的开发,但不得不说的,总是时断时续的。

近来出现有更多的要求对这个应用的更新与支持,因而又重新吸引了新的开发者自愿的工作并使之保持不断更新。这个应用就是知名的 Quartz Web 程序。(译者注:实际上这个应用程序基本驻步不前,当前版本还是 RC-1 2004-06-26 22:00 的,仅作参考来应用)

·Quartz Web 程序的截屏

Quartz Web 程序主界面的左上方展示了它所拥有的特征列表(看 图 13.4)。

图 13.4. Quartz Web 程序主界面 

[看全尺寸图]
QuartzFigure13.4.jpg

图 13.5 显示的是 Scheduler 控制界面,允许你启动、停止和暂停 Scheduler。

图 13.5. Scheduler 控制界面包含 Scheduler 可管理的特点

[看全尺寸图]
QuartzFigure13.5.jpg

·下载并构建 Quartz Web 程序

Quartz Web 程序是作为 OpenSymphony 上 Quartz 源程序库的一部分。它曾经是放在 SourceForge 上的,但最近已迁移到新家了(译者注:在 SourceForge 仍可下载到)。旧的站点是 http://sourceforge.net/projects/quartz;新的站点(包括 Quartz Web 程序) 可在 http://www.opensymphony.com/quartz/cvs.action 上找到。

当前,还没有 Web 程序的二进制版,而且标准的 Quartz 下载中也不包括 Web 程序,尽管程序的维护人员说过,他们会在 2006 前放出一个构建版。就现在来说,你需要下载到 Quartz 源代码树并使用 quartz/webapp 目录下的 Ant 构建文件来构建这个 Web 程序。

为了从 CVS 上下载 Quartz,你需要有一个 java.net 上的帐号,因为不允许匿名访问。在命令行下,进到你希望下载源代码树的目录中,输入:

cvs -d :pserver:[username]@cvs.dev.java.net:/cvs login
cvs -d :pserver:[username]@cvs.dev.java.net:/cvs checkout quartz
cvs -d :pserver:[username]@cvs.dev.java.net:/cvs checkout opensymphony

Quartz 需要 OpenSymphony 源码

OpenSymphony 的项目一直实践着持续集成。意思是说其上的项目紧紧的但支持性的依赖于另一项目。要成功构建 Quartz 还必须下载到 OpenSymphony 源码。使用前面的 checkout 命令,并把 quartz 替换为 opensymphony。你应该在与执行 checkout Quartz 相同的位轩处执行该命令。

你下载到了 Quartz 和 OpenSymphony 源码之后,你就可以在 quartz 目录中构建 Quartz 了,而且你可在 quartz 下的 webapp 目录中构建 Web 程序。改变目录到 webapp 并输入 ant

·安装 Quartz Web 程序

当你成功构建了 Web 程序,就会在 webapp/dist 目录中创建一个 quartz.war 文件。部署这个 Web 包(WAR) 到你所选的容器中。

并非所有的容器设计成一样的我们应当指出的是,尽管各种 Servlet 和 JSP 规范被设计来使得程序从一个容器移动另一个容器更简单,但提供商也有不足之处。在最小限度内,我们能说每一个提供商对规范的解翻译会有差异。

一些 Quartz 用户报告了关于以 WAR 文件形式部署 Quartz Web 程序到 WebLogic 8.1 和特定版本的 WebSphere 的问题。假如你是用的 Tomcat,你一般不会有很多问题,但是你在用其他容器时或许会面临一些挑战。如果你遇到一些麻烦,试着以散装格式(exploded format) 替换WAR 来部署应用。

·配置和运行 Quartz Web 程序

现在,WAR 文件已经部署好了,到你的 Web 浏览器中引燃它吧。对于 Tomcat,默认的 URL 是 http://localhost:8080/quartz/。在首页面,你会有选项来管理 Scheduler、Job、Trigger 和 Logging。

在首页面上所有的菜单选项都是安全的。在最新版本中加入了一个安全过滤器用以模仿容器管理的安全性。这意味着,你可以调用 HttpServletRequest.getRemoteUser()HttpRequest.isUserInRole() 方法,就像是在容器管理的安全性所做的那样。用户被定义在 SecurityFilter-config.xml 文件中。默认时,它包含一个用户,quartz,密码也是 quartz。你可以增加你的用户到 SecurityFilter-config.xml 文件中,或简单的继承 org.securityfilter.realm.SecurityRealmInterface 来提供一个安全域以适应你的需求。

以选择 Scheduler Control 菜单项开始,当提示时,以用户 quartz 登录。Quartz Web 程序预定义了一个测试的 Scheduler,这也是你在本页唯一可选项。深入到 quartz\webapp\config\resources 看看 Scheduler 是如何配置的。那儿你将找到目前熟悉的 quartz.properties 文件。在 Scheduler 控制页上下拉列表中的名字是 quartz.propertiesorg.quartz.scheduler.instanceName 属性。

接着点击 Job Definifions 菜单。那里你会看到三个 Job:NativeJobNoJobSendMailJob。假如你看遍了 \webapp\config\resources 目录,你将已经猜到了 Job 是定义在哪的:JobDefinitions.xml。这是在 Quartz Web 程序启动时由 ContextLoaderServlet 加载的。你可以编辑这个 JobDefinitions.xml 文件,或通过改变 web.xml 文件中 ContextLoaderServlet <init-param> 参数来提供你自己的 Job 定义文件。

如果你准备要运行一个 Job,你可以选择 Job 定义页面的 NativeJob 左边的 Create Job 链接。你要挑选一个本地的,可很清楚的看出你的 Job 已经运行的程序。假如你是在 Windows 平台下,你可以用 Notepad.exe。首先给这个 Job 一个名字如 Native Job Test。这个名字必须是在 Scheduler 中唯一的。接着,在命令(command) 框中输入 notepad 然后保存(Save)。你现在应当看到了你刚刚创建的 Job Detail 属性了。

点击 List Jobs 菜单项来看 Schedueler 上所有的 JobDetail。点击你的 JobDetail 左边的执行(Execute) 链接。一个记事本窗口弹了出来。虽然不怎么实用,但你可以想像其他可能的事。当你阅读此书时,你是否有些疑惑:你如何才能充分利于 Quartz 于非 Java 的 Job 呢?现在你会得到你的答案。

现在是个探索 Loggin 菜单的好时机了。点击 Loggin 并滚动到列表的底端。这儿,你将会找到你刚刚执行的 Job 的一个条目,伴随着自你的 Scheduler 启动以来的其他已发生的活动项。

点击列出所有 Trigger(List all Triggers) 菜单项来显示你的 Job 初始化加载 Trigger。注意到,这里没有选项用于从 Quartz Web 程序中增加一个 Trigger。Trigger 必须声明在 job.xml 文件中,这个文件也在 resources 目录中。job.xml 文件列表被声明在 quartz.properties 文件的 Job 初始器段中。

那就是 Quartz Web 程序的所有内容了。剩下要做的事就是增加你自己的 Job 和 Trigger 了。

本文链接 https://yanbin.blog/quartz-job-scheduling-framework-13-5/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

2 Comments
Inline Feedbacks
View all comments