﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-隔叶黄莺 The Blog of Unmi-随笔分类-Quartz</title><link>http://www.blogjava.net/Unmi/category/27619.html</link><description>〖隔叶黄莺三四声，挂壁飞瀑千万尘。若是人间无净土，此处为何妙语真！ 隔叶黄莺四字，本非取自此句，而有寄寓他意，因见妙语，亦与予心合!〗</description><language>zh-cn</language><lastBuildDate>Sat, 17 May 2008 09:57:23 GMT</lastBuildDate><pubDate>Sat, 17 May 2008 09:57:23 GMT</pubDate><ttl>60</ttl><item><title>Quartz Job Scheduling Framework［翻译］第六章. Job 存储和持久化 (第三部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/05/17/201043.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 17 May 2008 04:03:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/05/17/201043.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/201043.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/05/17/201043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/201043.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/201043.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>七. 使用 JobStoreTX</b> <br><br>我们首先要讨论的持久性 JobStore 是 JobStoreTX。名字中的 "TX" 代表着 "事物"。我们在前面提过，JobStoreTX 是设计用于想要 Quartz 来管理事物的环境中。例如，假如你正构建一个 J2EE 应用，并且不使用到应用服务器，如 WebLogic 或者 JBoss 等，那么 JobStoreTX 会是持久性 JobStore 正确的选择。<br><br>在之前章节中，我们看到配置 RAMJobStore 是多么的容易。我们提到 RAMJobStore 的其中一个优点就是易于配置。我们已经讨论过让数据库准备就绪该做的事情；现在我们讲述使 Quartz 应用支持 JDBC JobStore 需要对它配置些什么。<br><br><b>·配置 JobStoreTX</b><br><br>要告诉 Quartz 运行环境你想使用一个别的 JobStore 而不是默认的 RAMJobStore，你必须配置几个属性。配置它们的顺序无关紧要，只要保证在第一次运行程序之前都做了设置。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/05/17/201043.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/201043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-05-17 12:03 <a href="http://www.blogjava.net/Unmi/archive/2008/05/17/201043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第六章. Job 存储和持久化 (第二部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/05/11/199826.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sun, 11 May 2008 12:54:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/05/11/199826.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/199826.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/05/11/199826.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/199826.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/199826.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>四. 使用持久性的 JobStore</b><br><br>在很多方面，JobStore 有用内存来存储的，还有些使用某种能长期持久的方式来共享相拟的特征。这不该有什么惊奇的，因为他们都服务于同一目的。<br><br>和 RAMJobStore 一样，特久性的 JobStore 有优点也有其缺点。在你选择持久性的 JobStore 之前应该认真理解其利与弊。这节就来解释它们的区别，以及在什么情况下你会希望使用持久性的 JobStore。<br><br>目前，Quartz 提供了两种类型的持久性 JobStore，每一种类型都有其独特的持久化机制。<br><br><b>持久性 JobStore = JDBC + 关系型数据库</b><br><br>尽管有几种不同的持久化机制可被 Quartz 用于持久化 Scheduler 信息，Quartz 依赖于一个关系型数据库管理系统(RDMS) 来持久化存储。假如你想用某种别的而不是数据库来持久化存储，那么你必须通过实现 JobStore 接口自己构建它。假定你想用文件系统来持久化存储。你可以创建一个类，这个类要实现 J&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/05/11/199826.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/199826.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-05-11 20:54 <a href="http://www.blogjava.net/Unmi/archive/2008/05/11/199826.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第六章.  Job 存储和持久化 (第一部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/05/10/199692.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 10 May 2008 12:24:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/05/10/199692.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/199692.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/05/10/199692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/199692.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/199692.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>第六章. Job 存储和持久化</b><br><br>Quartz 用 JobStores 对 Job、Trigger、calendar 和 Schduler 数据提供一种存储机制。Scheduler 应用已配置的 JobStore 来存储和获取到部署信息，并决定正被触发执行的 Job 的职责。所有的关于哪个 Job 要执行和以什么时间表来执行他们的信息都来自于 JobStore。本章就来看 Quartz 中可用的各种类型的 JobStore，和如何使用他们，以及哪一个能适应你的需求。<br><br><i>"罗马非一日建成"</i><br><br>道格拉斯.亚当斯，《宇宙环游指南》<br> <br><b>一. Job 存储</b><br><br>在前面章节中，我们未曾花过任何时间来讨论 Scheduler 的 Job 和 Trigger 是保存在哪儿的。我们也许已经实现了，然而，当你停止了 Scheduler 后，那些有关哪些 Job 已经运行和哪些 Job 没有运行的信息就会丢失掉。实际上，所有的关于正在运行中的 Job 的信息也被销毁。<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/05/10/199692.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/199692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-05-10 20:24 <a href="http://www.blogjava.net/Unmi/archive/2008/05/10/199692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第十三章. Quartz 和 Web 应用 (第五部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/05/01/197678.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Thu, 01 May 2008 14:50:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/05/01/197678.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/197678.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/05/01/197678.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/197678.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/197678.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>六. 介绍 Quartz Web 程序</b><br><br>早期的 Quartz 框架开发者意识到一个 GUI 对于某类用户群体是必需的。几年前，一个 Web 应用被创立，它可用于管理 Quartz 框架。虽说是历经了几年有相当投入的开发，但不得不说的，总是时断时续的。<br><br>近来出现有更多的要求对这个应用的更新与支持，因而又重新吸引了新的开发者自愿的工作并使之保持不断更新。这个应用就是知名的 Quartz Web 程序。(译者注：实际上这个应用程序基本驻步不前，当前版本还是 RC-1 2004-06-26 22:00 的，仅作参考来应用)<br><br><b>·Quartz Web 程序的截屏</b><br><br>Quartz Web 程序主界面的左上方展示了它所拥有的特征列表(看 图 13.4)。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/05/01/197678.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/197678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-05-01 22:50 <a href="http://www.blogjava.net/Unmi/archive/2008/05/01/197678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第十三章. Quartz 和 Web 应用 (第四部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/05/01/197657.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Thu, 01 May 2008 08:38:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/05/01/197657.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/197657.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/05/01/197657.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/197657.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/197657.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>五. 使用 ServletContextListener</b><br><br>很值得一提的是你可以配置和集成 Quartz 到 Web 应用的另一种方式。从 2.3 版本的 Servlet API 开始，你能创建监听器，由容器在其生命周期中的某个特定时间回调。其中的一个监听器接口叫做 java.servlet.ServletContextListener，它包括有两个方法：<br><br>public void contextInitialized(ServletContextEvent sce);<br>public void contextDestroyed(ServeltContextEvent sce);<br><br>容器会在启动和关闭的时候相应的调用这两个方法。这就可以在 contextInitialized() 方法中初始化 Quartz Scheduler，并通过 contextDestroyed() 方法关闭它。代码 13.5 描述了这种用法：&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/05/01/197657.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/197657.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-05-01 16:38 <a href="http://www.blogjava.net/Unmi/archive/2008/05/01/197657.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第十三章. Quartz 和 Web 应用 (第三部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/04/30/197391.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Tue, 29 Apr 2008 17:26:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/04/30/197391.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/197391.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/04/30/197391.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/197391.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/197391.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>四. QuartzInitializerServlet 可谓救命草</b><br><br>Quartz 框架包括一个叫做 org.quartz.ee.servlet.QuartzInitializerServlet 的 Java 类，它继承自标准的 HttpServlet。你可应用这个 servlet 于你的 Web 应用中，它将会创建一个 StdSchedulerFactory 实例并在你的程序后续中一直可用。通常的，它就是做了命令行版本的 Quartz 程序的 main() 方法所做的事性。<br><br><b>QuartzInitializerServlet 在 Quartz 1.5 中有所改变</b><br><br>在 Quartz 的 1.5 发布版中，QuartzInitializerServlet 被修改为会存储 StdSchedulerFactory 实例到 Web 应用的 ServletContext 中。这就允许你的程序在任何地方都能访问到 Scheduler 实例，只要获取到了 HttpServletRequest 或 HttpSessi&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/04/30/197391.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/197391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-04-30 01:26 <a href="http://www.blogjava.net/Unmi/archive/2008/04/30/197391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第十三章. Quartz 和 Web 应用 (第二部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/04/25/196097.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Fri, 25 Apr 2008 15:47:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/04/25/196097.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/196097.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/04/25/196097.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/196097.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/196097.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>三. 在 Struts 框架中使用 Quartz</b><br><br>第一步就是要下载 Apache Struts 并创建好你的 Web 应用的目录结构。Struts 框架可从 Apache Struts 站点 http://struts.apache.org 上找到。也很欢迎你直接抓取到源代码来编译它，尽管你能够及时下载到最新版本的二进制版。<br><br>因为 Quartz 不直接依赖于 Struts 框架，所以你也就不必为该使用哪一版本的 Struts 而忧心。只管下载到当前的最新版本就是了。不过，你应该认识到，Struts 和 Quartz 框架共同依赖了一些第三方的包。实际上，在前面列出的 Quartz 所需要的库也是 Struts 框架所必须的。就是要留心混在一起不同的版本，如在最后一节的警告所注明的。<br><br><b>·创建你的 Web 应用目录结构</b><br><br>下载到了 Struts 之后，你就可以创建你的目录结构并引入必须的文件。作为例子，我们将创建一个虚构的 Web 应用，叫做 Job 管理控制台。因为这仅是一个假想的应用，我们&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/04/25/196097.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/196097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-04-25 23:47 <a href="http://www.blogjava.net/Unmi/archive/2008/04/25/196097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第十三章. Quartz 和 Web 应用 (第一部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/04/23/195334.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Wed, 23 Apr 2008 15:40:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/04/23/195334.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/195334.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/04/23/195334.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/195334.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/195334.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>第十三章. Quartz 和 Web 应用</b><br><br>到目前为止，我们与 Quartz 框架的交互主要还是通过命令行。对于有些使用者，比如我的一个大学计算机科学老教授(它曾每天都告诉我说，"GUI 是给能力差的人用的!")，使用命令行让他们很乐意接受。当应用程序被开发完成后，它们常要移交给终端用户或支持团队。在命令行应用程序上层架设一个 GUI 前端会非常有帮助也是很增值的。本章记述如何在 Web 应用中用 Quartz 来使得部署和维护 Job 更轻松。<br><br><b>一. 在 Web 应用中使用 Quartz</b><br><br>至此，你已经看到过许多在 J2SE 环境中独立运行的 Quartz 的例子。在第十章，"J2EE 中使用 Quartz"，你也学到了 Quartz 良好的运作于 J2EE 环境中。但是，我们还没有向你介绍的是如何部署 Quartz 到一个 Java Web 应用(通常简写为 Web app)中。这就是本章唯一意图&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/04/23/195334.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/195334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-04-23 23:40 <a href="http://www.blogjava.net/Unmi/archive/2008/04/23/195334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第十二章. Quartz Cookbook (第三部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/04/06/191028.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sun, 06 Apr 2008 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/04/06/191028.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/191028.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/04/06/191028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/191028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/191028.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>·替换已部署的 Job</b><br><br>Quartz 提供了对已部署 Job 进行修改的灵活性。它是通过允许用修改后的 JobDetail 替换已有的 JobDetail 来支持这一特性的。为展未这一例子，让我们更新代码 12.4 中的 CheckEmailJob 类。代码 12.4 是硬编码了邮件属性值到 Job 类中的。更好的做法是传入那些属性，如此则可以随意的改变它们；那让我们改动 CheckEmailJob 来做到这一点。代码 12.7 显示的是那个 Job 的更新后的版本。<br><br><b>代码 12.7. 更新后的允许传入属性的 CheckEmailJob</b>&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/04/06/191028.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/191028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-04-06 13:30 <a href="http://www.blogjava.net/Unmi/archive/2008/04/06/191028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第十二章. Quartz Cookbook (第二部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/04/05/190914.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 05 Apr 2008 07:02:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/04/05/190914.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/190914.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/04/05/190914.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/190914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/190914.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>二. 与 Job 一同工作</b><br><br>本节为使用 Quartz 的 Job 提供了一些例子。<br><br><b>·创建一个新的 Job 类</b><br><br>创建一个新的 Job 类很简单。仅需创建一个类，让它实现 org.quartz.Job 接口即可。这个接口需要你实现 execute() 方法，它会在 Scheduler 决定 Job 要执行时被调用。<br><br>代码 12.4 演示了一个简单的 Job，它会为某个用户检查邮件服务器上是否有新的邮件。当 Scheduler 执行这个 Job 时，方法 execute() 被调用，然后其中的代码就会连接到邮件服务器并获取任何邮件消息。这一 Job 只简单的打印邮件是谁发的和邮件的主题。<br><br><b>代码 12.4. 一个检查邮件服务器上的邮件的 Quartz Job</b>&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/04/05/190914.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/190914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-04-05 15:02 <a href="http://www.blogjava.net/Unmi/archive/2008/04/05/190914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第十二章. Quartz Cookbook (第一部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/04/05/190857.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Fri, 04 Apr 2008 17:52:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/04/05/190857.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/190857.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/04/05/190857.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/190857.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/190857.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>第十二章. Quartz Cookbook</b><br><br>本章的目的是为在构建 Quartz 应用时常遇到的情形提供一系列的例子和解决方案。本章也可作为对本书剩余部分的一个参考和补充。<br><br><b>一. 与 Scheduler 一同工作</b><br><br>本节提供了使用 Quartz Scheduler 管理功能的几个例子。<br><br><b>·创建和启动 Scheduler</b><br><br>你能通过几种方式来启动 Quartz Scheduler，但是最简单的方式是使用两种 SchedulerFactory 实现中的一个。特别的，org.quartz.impl.stdSchedulerFactory 使用很简单，要执行对 Scheduler 的所有设置工作只需要调用 getDefaultScheduler() 这一静态方法即可，如代码 12.1 所演示的那般。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/04/05/190857.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/190857.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-04-05 01:52 <a href="http://www.blogjava.net/Unmi/archive/2008/04/05/190857.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第五章. Cron 触发器及相关内容 (第四部分)</title><link>http://www.blogjava.net/Unmi/archive/2008/04/04/190768.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Fri, 04 Apr 2008 04:07:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/04/04/190768.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/190768.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/04/04/190768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/190768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/190768.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>七. Cron 表达式 Cookbook</b> <br><br>此处的 Cron 表达式 cookbook 旨在为常用的执行需求提供方案。尽管不可能列举出所有的表达式，但下面的应该为满足你的业务需求提供了足够的例子。<br><br>分钟的 Cron 表达式<br><br>表 5.1. 包括了分钟频度的任务计划 Cron 表达式<br><br>用法 表达式 <br>每天的从 5:00 PM 至 5:59 PM 中的每分钟触发 0 * 17 * * ?<br> <br>每天的从 11:00 PM 至 11:55 PM 中的每五分钟触发 0 0/5 23 * * ?<br> <br>每天的从 3:00 至 3:55 PM 和 6:00 PM 至 6:55 PM 之中的每五分钟触发 0 0/5 15,18 * * ?<br> <br>每天的从 5:00 AM 至 5:05 AM 中的每分钟触发 0 0-5 5 * * ? &nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/04/04/190768.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/190768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-04-04 12:07 <a href="http://www.blogjava.net/Unmi/archive/2008/04/04/190768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第五章. Cron 触发器及相关内容 (第三部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/03/29/189425.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 29 Mar 2008 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/03/29/189425.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/189425.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/03/29/189425.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/189425.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/189425.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>四. 为 CronTrigger 使用起迄日期</b><br><br>Cron 表达式是用来决定一个 Trigger 被触发执行一个 Job 的日期和次数。当你创建一个 CronTrigger 实例，假如没为它指定一个开始时间，这个 Trigger 当然就会假定是在依赖于 Cron 表达式尽早的被触发。例如，如果你用这个表达式<br><br>0 * 14-20 * * ?<br><br>这个 Trigger 会在每天的从下午 2 点到下午的 7:59 间的每分钟触发一次。一旦你运行了这个表达式的 CronTrigger，假如当前是下午 2 点后(不能超过 7:59 PM--译者注)，它将会立即触发。它会在每天无限期的被触发。<br><br>另一方面，倘若你希望这个计划直到下一天才开始，并且只执行两天，你就可以用 CronTrigger 的 setStartTime() 和 setEndTime() 方法来形成一个 "定时箱" 来触发。代码 5.2 描述了限定 CronTrigger 仅触发两天的例子。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/03/29/189425.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/189425.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-03-29 11:19 <a href="http://www.blogjava.net/Unmi/archive/2008/03/29/189425.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第五章. Cron 触发器及相关内容 (第二部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/02/23/181575.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 23 Feb 2008 05:52:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/02/23/181575.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/181575.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/02/23/181575.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/181575.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/181575.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>三. cron 表达式的格式</b><br><br>Quartz cron 表达式的格式十分类似于 UNIX cron 格式，但还是有少许明显的区别。区别之一就是 Quartz 的格式向下支持到秒级别的计划，而 UNIX cron 计划仅支持至分钟级。许多我们的触发计划要基于秒级递增的(例如，每45秒)，因此这是一个非常好的差异。<br><br>在 UNIX cron 里，要执行的作业（或者说命令）是存放在 cron 表达式中的，在第六个域位置上。Quartz 用 cron 表达式存放执行计划。引用了 cron 表达式的 CronTrigger 在计划的时间里会与 job 关联上。<br><br>另一个与 UNIX cron 表达式的不同点是在表达式中支持域的数目。UNIX 给出五个域(分、时、日、月和周)，Quartz 提供七个域。表 5.1 列出了 Quartz cron 表达式支持的七个域。<br><br><b>表 5.1. Quartz Cron 表达式支持到七个域</b>&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/02/23/181575.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/181575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-02-23 13:52 <a href="http://www.blogjava.net/Unmi/archive/2008/02/23/181575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第五章. Cron 触发器及相关内容 (第一部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/02/21/181178.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Thu, 21 Feb 2008 15:13:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/02/21/181178.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/181178.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/02/21/181178.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/181178.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/181178.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>第五章. Cron 触发器及相关内容</b><br><br>我们在上章中有承诺过会花更多时间来讲 Quartz 的 CronTrigger，所以不会让你失望的。SimpleTrigger 对于需要在指定的毫秒处及时执行的作业还是不错的，但是假如你的作业需要更复杂的执行计划时，你也就要 CronTrigger 给你提供更强更灵活的功能。<br><br><b>一. Cron 的快速一课</b><br><br>cron 这一观念是来自于 UNIX 世界。在 UNIX 中，cron 是一个运行于后台的守护程序，它负责所有基于时间的事件。尽管 Quartz 除相同的名字和相似的表达式语法外，并未分享到 UNIX cron 别的东西，我们还是值得花几个段落去理解 cron 背后的历史。我们这里的目标不是搞混 UNIX cron 表达式和 Quartz 的 cron 表达式，但是你应该了解 Quartz 表达式的历史，并探索为什么他们运作起来很像。这儿明显有许多有意图的相似性。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/02/21/181178.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/181178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-02-21 23:13 <a href="http://www.blogjava.net/Unmi/archive/2008/02/21/181178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第四章. 部署 Job (第四部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/01/08/173066.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Tue, 08 Jan 2008 15:07:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/01/08/173066.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/173066.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/01/08/173066.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/173066.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/173066.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>七. 线程在 Quartz 中的用法</b><br><br>线程与 Quartz 来说尤为重要，因为 Quartz  就是设计为支持同时运行多个 Job。为达到此效果，Quartz 非常倚重于内建于 Java 语言的线程，借助于自己的类和借口还有所增强。你已经在本章或前面章节中看到过这方面的例子。<br><br>当 Quartz Schduler 首次由某个工厂方法创建时，工厂配置了 Scheduler 会在它的整个生命周期中用到的几个重要的资源。其中一些重要的资源是与线程相关的。<br><br><b>·主处理线程：QuartzSchedulerThread</b><br><br>Quartz 应用第一次运行时，main 线程会启动 Scheduler。QuartzScheduler 被创建并创建一个 org.quartz.core.QuartzSchedulerThread 类的实例。QuartzSchedulerThread 包含有决定何时下一个 Job 将被触发的处理循环。顾名思义，QuartzSchedulerThread 是一个 Java 线程。它作为一&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/01/08/173066.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/173066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-01-08 23:07 <a href="http://www.blogjava.net/Unmi/archive/2008/01/08/173066.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第四章. 部署 Job (第三部分) </title><link>http://www.blogjava.net/Unmi/archive/2007/12/31/171690.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Mon, 31 Dec 2007 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/12/31/171690.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/171690.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/12/31/171690.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/171690.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/171690.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>5. 易失性、持久性和可恢复性</b><br><br>这三个属性有些类似的，由于它们影响的都是 Job 的运行时行为。我们下面依次讨论它们。<br><br><b>·Job 的易失性</b><br><br>一个易失性的 Job 是在程序关闭之后不会被持久化。一个 Job 是通过调用 JobDetail 的 setVolatility(true) 被设置为易失性的。<br><br>当你需要持久化 Job 时不应使用 RamJobStore<br><br>RamJobStore 使用的是非永久性存储器，所有关于 Job 和 Trigger 的信息会在程序关闭之后丢失。保存 Job 到 RamJobStore 有效的使得它们是易失性的。假如你需要让你的 Job 信息在程序重启之后仍能保留下来，你就该考虑另一种 JobStore 类型，比如 JobStoreTX 或者 JobStoreCMT。它们会在第六章“作业存储与持久化”中讲到。 <br><br>Job 易失性的默认值是 false.&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/12/31/171690.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/171690.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-12-31 10:50 <a href="http://www.blogjava.net/Unmi/archive/2007/12/31/171690.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第四章. 部署 Job (第二部分)</title><link>http://www.blogjava.net/Unmi/archive/2007/12/27/170855.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Thu, 27 Dec 2007 13:56:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/12/27/170855.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/170855.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/12/27/170855.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/170855.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/170855.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>3. 管理 Scheduler</b><br><br>除了启动 Scheduler, 在应用的生命周期中你也许还要执行 Scheduler 的别的一些操作。这些 Scheduler 操作包括查询、设置 Scheduler 为 standby 模式、继续、停止。很多情况下，当一个 Scheduler 启动后，除让它运行之外你不需要对它做任何事情的。在某些情形下，你也可能会要临时的终止 Scheduler 而转入到 standby 模式。<br><br><b>·启动 Scheduler</b><br><br>启动一个 Scheduler 也不总是一目了然的。当你有了 Scheduler 的实例，并得到正确的初始化，你的 Job 和 Triiger 也已注册上去了，你只需要简单的调用 start() 方法：&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/12/27/170855.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/170855.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-12-27 21:56 <a href="http://www.blogjava.net/Unmi/archive/2007/12/27/170855.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第四章. 部署 Job (第一部分)</title><link>http://www.blogjava.net/Unmi/archive/2007/12/25/170343.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Tue, 25 Dec 2007 15:24:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/12/25/170343.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/170343.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/12/25/170343.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/170343.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/170343.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>第四章. 部署 Job</b><br><br>在上一章中，你首次尝试使用了 Quartz 来部署 Job。无可否认地，那些 Job 都不是很复杂，但这个不是重点。你应该轻松的对如何构造并部署 Job 有了相当的了解，更重要的是，由此热情的希望学得更多的东西。在本章中将会继续给你讲述。<br><br>第四章将带领你深入到 Quart 框架的核心部分。可证明的是，这一章对于阅读和理解本书是非常之重要的。调度器(Scheduler) 是此框架的心脏。本章关注于如何使用 Scheduler 来管理你的 Job；如何创建并关联触发器以使 Job 能被触发执行；以及如可选择 calendar 为给定的时程安排提供更多的灵活性。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/12/25/170343.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/170343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-12-25 23:24 <a href="http://www.blogjava.net/Unmi/archive/2007/12/25/170343.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第十章. J2EE 中使用 Quartz (第二部分) </title><link>http://www.blogjava.net/Unmi/archive/2007/12/09/166461.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sun, 09 Dec 2007 13:55:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/12/09/166461.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/166461.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/12/09/166461.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/166461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/166461.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>·在 J2EE 应用服务器中运行 Quart</b><br><br>作为 J2EE 客户端运行 Quartz 比运行为外部 J2SE 应用程序稍显繁琐。这主要是因为部署一个应用到容器中有点了儿复杂，J2EE 规范对容器中的组件会有些约束。其中最大的原则之一就是涉及到该由谁来创建线程。因为 J2EE 容器有责任去管理所有资源，所以它并非允许谁想谁就能创建线程的。假如是这样的话，容器就会要更艰难的去管理环境和保证一切稳定性。Quartz 会创建自己的工作者线程，所以你必须依照一些步骤来保证它能正常的运转。<br><br>确保代像代码 10.1 那样的一个无状态会话 Bean 已部署到容器中。最简单的部署 Quartz 到容器中的方式是构建一个包含所必须文件的 WAR 包，然后使用管理工具或 Eclipse 部署这个 Web 应用到容器中。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/12/09/166461.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/166461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-12-09 21:55 <a href="http://www.blogjava.net/Unmi/archive/2007/12/09/166461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第十章. J2EE 中使用 Quartz (第一部分) </title><link>http://www.blogjava.net/Unmi/archive/2007/12/08/165925.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Fri, 07 Dec 2007 17:19:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/12/08/165925.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/165925.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/12/08/165925.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/165925.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/165925.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Java 2 平台企业版定义了基于组件的企业应用开发标准。不管你是否倾向于使用一种开源的 J2EE 服务器，比如 JBoss 或 Geronimo，或者你更希望得到可靠安全的商业服务支持，比如 WebSphere 和 WebLogic，你都能在那些应用服务器中使用几种不同的部署方式使用 Quartz。本章给你示范了在 J2EE 应用服务器中以不同策略部署 Quartz，你也会看到 Quartz 框架更加丰富了 J2EE。<br><br><b>一：假如我有 J2EE，为什么还需要 Quartz?</b><br><br>自从 20 世纪 90 年代末期 J2EE 首次登上舞台以来，开发人员就被某些规格决议和一些表面看来明显缺失的特征所困惑。这没必要去批判规格的制定者，更多的是说明了当有不同意见和议程的独立团体，在尝试达成统一的优先级时，就像联合国进行决议时那样，并不如所想像的那样好。许多必须的特征获得认可，但是一些关键的特征被略去留待以后加入。其中一个让早期规范遗漏的关键特征就是定时器服务。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/12/08/165925.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/165925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-12-08 01:19 <a href="http://www.blogjava.net/Unmi/archive/2007/12/08/165925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第九章. 使用 Quartz 的远程方式 (第三部分) </title><link>http://www.blogjava.net/Unmi/archive/2007/11/27/163341.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Mon, 26 Nov 2007 16:50:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/11/27/163341.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/163341.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/11/27/163341.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/163341.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/163341.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>6. 创建 RMI 客户端</b><br><br>你需要创建一个客户端，用来调用远程 Quartz 调度器上的方法。客户端会同 RMI 注册服务器进行通信，进而定位到远程调度器对象，然后就能够调用其中的方法了。这些包括有暂停和停止调度器、部署和卸下 Job，和执行所有其他对与远程客户端可见的方法。<br><br><b>·配置 Quartz RMI 客户端</b><br><br>类似于表 9.1 所示服务端的配置，表 9.2 所列出的属性也是必须加到 Quartz RMI 客户端的。这两份属性列表必须分别应用到服务端和客户端的。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/11/27/163341.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/163341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-11-27 00:50 <a href="http://www.blogjava.net/Unmi/archive/2007/11/27/163341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第九章. 使用 Quartz 的远程方式 (第二部分) </title><link>http://www.blogjava.net/Unmi/archive/2007/11/23/162457.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Thu, 22 Nov 2007 16:13:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/11/23/162457.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/162457.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/11/23/162457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/162457.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/162457.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>4. 创建 Quartz RMI 服务端</b><br><br>你务必按几个步骤来配置 Quartz 来使用 RMI。其中的一些步骤会在创建 Quartz RMI 服务端用到，还有些步骤会在 Quartz 客户端连接服务端。我们先来阐述服务端的配置步骤。<br><br><b>·配置 Quartz RMI 服务端</b><br><br>第一步就是修改要部署到 Quartz RMI 服务端的 quartz.properties 文件。当在 Quartz 中使用 RMI，你还必须添加几个新的属性。表 9.1 包括了完整 RMI 属性列表。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/11/23/162457.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/162457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-11-23 00:13 <a href="http://www.blogjava.net/Unmi/archive/2007/11/23/162457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第九章. 使用 Quartz 的远程方式 (第一部分)</title><link>http://www.blogjava.net/Unmi/archive/2007/11/22/162239.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Wed, 21 Nov 2007 16:20:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/11/22/162239.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/162239.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/11/22/162239.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/162239.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/162239.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>第九章. 使用 Quartz 的远程方式</b><br><br>以独立方式运行的 Quartz 应用程序，仅限于在 JVM 内部访问调度器。和其他任何 J2SE 程序一样，不使用其他某种机制的话，是决不允许从外部访问 JVM 中的对象的。<br><br>幸运的是，有几种技术(机制) 可让你做到这一点。Quartz 框架很好的支持其中一种机制－－远程方法调用(RMI)。本章就是关注于如何部署 Quartz 为一个 RMI 服务，以便于你能够从  JVM 外部访问到调度器。这样做有几个好处，这也是我们本章要讨论内容。<br>幸运的是，有几种技术(机制) 可让你做到这一点。Quartz 框架很好我支持其中一种机制，远程方法调用(RMI)。本章就是关注于如何部署 Quartz 为一个 RMI 服务，以便于你能够从  JVM 外部访问到调度器。这样做有几个好处，这也是我们本章要讨论内容。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/11/22/162239.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/162239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-11-22 00:20 <a href="http://www.blogjava.net/Unmi/archive/2007/11/22/162239.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第三章. Hello Quartz (第四部分) </title><link>http://www.blogjava.net/Unmi/archive/2007/11/17/161283.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 17 Nov 2007 14:16:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/11/17/161283.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/161283.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/11/17/161283.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/161283.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/161283.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 4. 打包 Quartz 应用程序<br><br>让我们最后简单讨论打包一个用到了 Quarts 框架的应用程序的流程，也以此来结束本章的内容。<br><br>·Quartz 第三方依赖包<br><br>从 1.5 版的发行包开始，你会看到一个 <QUARTZ_HOME>\lib 目录，在这个目录，你会发现几个子目录：<br><br>·<QUARTZ_HOME>\lib\core<br>·<QUARTZ_HOME>\lib\optional<br>·<QUARTZ_HOME>\lib\build&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/11/17/161283.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/161283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-11-17 22:16 <a href="http://www.blogjava.net/Unmi/archive/2007/11/17/161283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第三章. Hello Quartz (第三部分)</title><link>http://www.blogjava.net/Unmi/archive/2007/11/17/159830.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 17 Nov 2007 08:25:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/11/17/159830.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/159830.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/11/17/159830.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/159830.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/159830.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 3. 声明式部署一个 Job <br><br>前面我们讨论过，尽可能的用声明式处理软件配置，其次才才虑编程式。再来看代码  3.6，如果我们要在 job 启动之后改变它的执行时间和频度，必须去修改源代码重新编译。这种方式只适用于小的例子程序，但是对于一个大且复杂的系统，这就成了一个问题了。因此，假如能以声明式部署 Quart Job 时，并且也是需求允许的情况下，你应该每次都选择这种方式。<br><br>要在我们的例子中声明式配置调度器信息，我们会用到一个 Quartz 自带的叫做 org.quartz.plugins.xml.JobInitializationPlugin 的插件。<br><br>默认时，这个插件会在 classpath 中搜索名为 quartz_jobs.xml 的文件并从中加载 Job 和 Trigger 信息。<br><br>·使用 quartz_jobx.xml 文件<br><br>代码 3.8 就是目录扫描例子的 Job 定义的 XML 文件。正如代码 3.5 所示例子那样，这里我们用的是声明式途径来配置 Job 和 Trigger 信息&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/11/17/159830.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/159830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-11-17 16:25 <a href="http://www.blogjava.net/Unmi/archive/2007/11/17/159830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第三章. Hello Quartz (第二部分) </title><link>http://www.blogjava.net/Unmi/archive/2007/11/11/158909.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sun, 11 Nov 2007 13:33:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/11/11/158909.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/158909.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/11/11/158909.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/158909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/158909.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 到目前为止，我们已经创建了一个 Quartz job，但还没有决定怎么处置它－－明显地，我们需以某种方式为这个 Job 设置一个运行时间表。时间表可以是一次性的事件，或者我们可能会安装它在除周日之外的每个午夜执行。你即刻将会看到，Quartz Schduler 是框架的心脏与灵魂。所有的 Job 都通过 Schduler 注册；必要时，Scheduler 也会创建 Job 类的实例，并执行实例的 execute() 方法。<br>Scheduler 会为每一次执行创建新的 Job 实例<br><br>Scheduler 在每次执行时都会为 Job 创建新的实例。这就意味着 Job 的任何实例变量在执行结束之后便会丢失。与此相反概念则可用述语有状态的（J2EE世界里常见语）来表达，但是应用 Quartz  ，一个有状态的 job 并不用多少开销，而且很容易的配置。当你创建一个有状态的 job 时，有一些东西对于 Quartz 来说是独特的。最主要的就是不会出现两个有着相同状态的 Job 实例并发执行。这可能会影响到程序的伸缩性。这些或更多的问题将在以后的章节中详细讨论。 <br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/11/11/158909.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/158909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-11-11 21:33 <a href="http://www.blogjava.net/Unmi/archive/2007/11/11/158909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第三章. Hello Quartz (第一部分) </title><link>http://www.blogjava.net/Unmi/archive/2007/11/03/157861.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Fri, 02 Nov 2007 17:54:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/11/03/157861.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/157861.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/11/03/157861.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/157861.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/157861.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 第三章：Hello Quartz<br>多数读者都较容易从一个简明扼要的例子中明白一个东西。作为写作者，要注意避免把一章的内容精简地几乎什么都没了；作为读者呢，需要有耐心并且要进一步相信其后相关的章节应该去阅读，尽管这个例子看起来是如此之简单。<br><br>有了这种初衷，这一章将为你介绍如何用 Quartz 框架创建一个简单的应用程序，它展示了一个典型的应用。这个例子将让你领略到创建和执行一个简单应用的必要步骤。通过本章的学习，为你学习本书的后续章节打下了坚实的基础。 <br><br>1. "Hello, World" Quartz 工程<br>本示例应用比起众所周知的 System.out.println("Hello world from Quartz") 来还是要有趣些。当我们用 Quartz 执行一个作业时，总是希望它能为我们执行一些有趣且有意义的任务。因此，接下来我们就要&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/11/03/157861.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/157861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-11-03 01:54 <a href="http://www.blogjava.net/Unmi/archive/2007/11/03/157861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第二章. Quartz 起步</title><link>http://www.blogjava.net/Unmi/archive/2007/10/21/154605.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 20 Oct 2007 16:39:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/10/21/154605.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/154605.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/10/21/154605.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/154605.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/154605.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 第二章. Quartz 起步 <br><br>本章对 Quartz 框架一个快速的入门介绍，同时也大略指导你从哪里下载，构建和安装这个框架<br><br>1. Quartz 框架的发展历程<br>和现今许多在用的开源项目一样，Quartz之初也只是为个人开发者提供了一个简单的实现方案。但是随着日益增多的关键人员的积极参与和慷慨的贡献，Quartz 已经成为了一个为众人所知，并且能帮助人们解决更大问题的框架。<br><br>Quartz 项目 是由 James House 创立的，它在1998年就有该框架最初的构思。包括作业队列的概念，使用线程池来处理作业，也许它最早的模型已不为现今的Quartz使用者所知了。<br><br>在接下来的数年中，House 自己说他一直在关注着同一个需求：需要一个灵活的作业调度工具。他在找寻&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/10/21/154605.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/154605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-10-21 00:39 <a href="http://www.blogjava.net/Unmi/archive/2007/10/21/154605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第一章. 企业应用中的作业调度</title><link>http://www.blogjava.net/Unmi/archive/2007/10/17/153413.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Tue, 16 Oct 2007 18:17:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/10/17/153413.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/153413.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/10/17/153413.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/153413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/153413.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>第一章.  企业应用中的作业调度</b><br><br>·什么是作业调度<br>·作业调度为什么说是重要的<br>·企业应用中的作业调度<br>·非企业应用中的作业调度<br>·作业调度与工作流<br>·关于作业调度其他可选择方案<br><br><b>1. 什么是作业调度</b><br>“作业”，这一技术述语上的概念，又让我们回到了大型机的年代，那时候，用户/程序员提交一叠穿空卡片或者纸带（上面表述了一个作业）给操作人员，由操作人员帮忙执行那些作业。用户等待作业执行完后，回到主机那边取自己的卡片和打印出来的输出结果。<br><br>因为不是每一个作业要求立即被执行，所以作业可以被安排在将来的某个时候执行。比如说，一个系统管理员每天晚上可能有一份要执行的&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/10/17/153413.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/153413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-10-17 02:17 <a href="http://www.blogjava.net/Unmi/archive/2007/10/17/153413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>