直接以一个例子在说明,如DB2中有一个简单存储过程 selectAllUsers1CREATE procedure selectAllUsers 2DYNAMIC RESULT SETS 1 3BEGIN 4 DECLARE temp_cursor1 CURSOR WITH RETURN TO CLIENT FOR 5 SELECT * FROM test; 6 OPEN temp_cursor1; 7END;
映射文件中关于存储过程内容如下 Read More
十三. 改善持久性 JobStore 的性能
当在只有最少量时间做任何相关事情的时候,性能是一个广受人瞩目的课题。作为有经验的开发者,我们知道从项目之初它就成为一个需要考虑的事。
在使用 Quartz 的 JobStore 时,最大的关注面就是有关于与关系型数据库的交互。数据库 I/O(就像文件 I/O) 通常不是很快。你可以通过采取一些措施,如调优 SQL、增加索引和操作表和列等来改善性能。因为性能问题在写 Quartz 框架的时候就已有考虑到,而你又不想在未出现实际的性能问题时扎入到 Quartz 中做些手脚,那么可试图通过配置来解决它,或者尝试所有可能的方式,只要不是维护源代码。最好的消息是 Quartz 是开源的,你完全可以窥入其中了解它做了什么和如何实现的。假如你不喜欢它现有的查询数据库的方式,你有权去修正它。不过,在你采取行动之前,确定检查了 Quartz 论坛上的用户和开发者,看看是否其他人也遇到了相关的问题并浏览推荐的做法。 Read More
十二. 为 JobStoreCMT 配置数据源
跟 JobStoreTX 一样,我们需要配置一个 Datasource 才能使用 JobStoreCMT。然而,JobStoreCMT 需要两个 Datasource 而不是像 JobStoreTX 只要一个。其中一个 Datasource 和我们为 JobStoreTX 设置的类同:作为不受管理的数据源。同时呢,我们还需配置第二个数据源,是作为受管理的数据源,它由应用服务器来进行管理。为什么 JobStoreCMT 需要两个 Datasource 呢?JobStoreCMT 的原始作者,Jeffrey Wescott,设计 JobStoreCMT 使用一个标准的 JDBC 连接来做它“自己的工作”,同时,代表客户端(如部署 Job) 的工作在执行时是使用一个在容器控制之下有自身事物的 JDBC 连接。即使 Quartz 处在一个大事物中,这种设计也允许用户与 Quartz 交互,而无需 JobStoreCMT 非得使用应用服务器的事物管理器(例如,经由 UserTransaction) 在做自己内部工作时(如处理已错过执行的 Trigger) 来创建和终止事物。如果是 JobStoreCMT 使用 UserTransation 只给它配置一个数据源,从配置方面来看确实方便。然而,在相比于别的特性需求和改进的必要性时,作此变化并不会成为团队中首要的问题,因而 JobStoreCMT 还是继续要两个数据源。
Read More
十. 使用数据库存储 Scheduler 信息
·加载 Job 到数据库中
在前面有一节,"使用内存存储 Scheduler 信息",我们谈到关于在使用 RAMJobStore 时如何加载 Job 和 Trigger 信息到内存中。那么 Job 和 Trigger 又是如何加载到数据库中的呢?存在以下几个方法把 Job 信息存入到数据库:
· 在你的程序中加入 Job 信息
· 使用 JobInitializationPlugin
· 使用 Quartz Web 应用程序
我们在前面的 RAMJobStore 章节中讨论过前面两种途径。当它们用于 JDBC JobStore 时,并没有多大不同,只些许例外。首先,你需要知道,当使用这两个方法式,Job 信息是在数据库中的。甚至在你停止了程序后,这些信息仍然保留在数据库中。甚至是你不在你的程序中使用 JobInitializationPlugin 时,这些信息也还在数据库中。基于这一点,它是会从数据库中找寻 Job 信息。第八章涵盖了 JobInitializationPlugin 和常用的 Quartz 插件。 Read More
在 Websphere Application Server(WAS,我用的还是 WAS 5.1,所以用的 Struts2 也是 j4 版,恐怕很难再找到像我这样在 JDK 1.4/Servlet 2.3/JSP 1.2 下用 Struts2 的了) 部署的第一个 Struts2 的应用没有出什么问题。可是在另一个 WAS 下部署的 Struts2 应用却有些问题(说明:Struts2 的版本都是 struts-2.0.11.1),所有用了 <s:url url=…/> 或 <s:form action=…/> 来生成的 URL 都带了个 ;jsessionid=xxx,如:
<script src="/unmi/js/sys_cal.js;jsessionid=0001bosAgxaO_kxlHCbjS1AMxTu:11mijgptm">
<img src="/unmi/images/img_btn.gif;jsessionid=0001bosAgxaO_kxlHCbjS1AMxTu:11mijgptm"/>
<a href="/unmi/storeSubinvRelate!toUpdate.action;jsessionid=0001bosAgxaO_kxlHCbjS1AMxTu:11mijgptm?model.id=162"> Read More
八. 为 JobStroreTX 创建数据源
当使用持久性 JobStore 时,Quartz 需要一个数据源。数据源扮演着产生数据库连接工厂的角色。在 Java 中,所有的数据源要实现 java.sql.Datasource 接口。Quartz 自身并不提供 Datasource 的所有功能;它只代表了那一职责。默认的,Quartz 能使用另一开源的框架,叫做 Commons DBCP,或者可以通过 JNDI 查找应用服务器中定义的 DataSource。
DBCP 是一个 Jakarta Commons 项目,网址是 http://jakarta.apache.org/commons/dbcp。这个框架的二进制版包含在 Quartz 的发行版中,你应该把它加到你的 Quartz 应用中来。你还需要加入 Commons Pool 库,它也包含中 Quartz 发行版中,是 DBCP 要用到的。
使用 JobStoreTX 时,你必须在 quartz.properties 文件中指定 Datasource 属性。这允许 Quartz 为你创建并管理 Datasource。表 6.4 列示了使用 JobStoreTX 时需要的 Datasource 配置属性。 Read More
Struts2 的 struts.xml 中是分 package 配置的,可以为 package 设置 namespace 属性,如
<package namespace="/secure" ....>
......
</package>
如果没有指定 namespace 属性,默认 namespace 是 ""。使用 namespace 可以方便于按不同目的规划对应用的访问规则。比如不同 namespace 下配置了不同的拦截器就可以实现权限的控制,如 "/secure" 下已登陆用户才能访问,"/public" 下可公开访问的。 Read More![Quartz Job Scheduling Framework[翻译]- 中文版目录总汇及内容提要](https://yanbin.blog/images/logos/quartz-logo.jpeg)
- 第一章. 企业应用中的作业调度内容提要:什么是作业调度,作业调度为什么说是重要的,企业应用中的作业调度,非企业应用中的作业调度,作业调度与工作流,关于作业调度其他可选择方案
- 第二章. Quartz 起步内容提要:本章对 Quartz 框架一个快速的入门介绍,同时也大略指导你从哪里下载,构建和安装这个框架
- 第三章. Hello Quartz (第一部分)内容提要:建立 Hello Quartz 工程,并创建一个 Quartz Job 类 ScanDirectoryJob.
- 第三章. Hello Quartz (第二部分)内容提要:创建一个 Quartz Scheduler,关联上一个 Quartz Trigger 以编程方式调度前面编写的 ScanDirectoryJob 运行。
- 第三章. Hello Quartz (第三部分)内容提要:通过配置 quartz.properties、quartz_jobs.xml 以声明的方式调度 ScanDirectoryJob 运行。 Read More
生活中常为一些无伤大体之事优柔寡断,譬如买羽毛球拍是方头的还是圆头的呢?电子产品是这款好还是那款好呢?拿此又放下,举彼又放下,最后靠概率来决定。取其一,少段时间内总有些戚戚然,而后全然无所谓。小事无碍,大事可就会后悔不及,无疑亦会让许多机会径直溜去。
1. 从此开始学习 Struts2 对 Ajax 的支持。这也是 Struts2 新注入的元素。Struts2 的 Ajax 支持是建立在 Dojo 和 DWR 基础之上的。提供了 Ajax 的输入检验,表单提交;pub-sub 事件模型、自动完成以及与 JSON 的使用等功能。
2. 在 Struts2.0.6 和 Struts2.0.11 的 apps/struts-showcase-2.x.x.war 中的 dwr 包都还是 dwr-1.1-beta-3.jar,当前 DWR 最新版是 2.0,前一个稳定版是 1.1.4,所以正式应用可用 1.1.4 版,若用 2.0 DWR 需做充分的测试。Struts2 的 Ajax 支持是建立在 ajax 主题上的,ajax 是扩展了 xhtml 主题。 Read More为什么用 http://unmi.blogjava.net 进不了我的博客,会转向到 cnblogs
原来一直都用 http://unmi.blogjava.net 进我的博客的, 而不需输入 http://www.blogjava.net/Unmi,但是最近不行了, 输入 http://unmi.blogjava.net 会转向到 http://www.cnblogs.com 去。
而在 http://www.cnblogs.com 的博客仍可用 http://unmi.cnblogs.com 的形式进去。
这么久了,好像也没有人觉得有些不方便。
这里的管理员请麻烦及时看看怎么回事了,请尽快调整好,谢谢!- 第一章. 企业应用中的作业调度