Quartz Job Scheduling Framework[翻译]第六章. Job 存储和持久化 (第七部分)

十三. 改善持久性 JobStore 的性能

当在只有最少量时间做任何相关事情的时候,性能是一个广受人瞩目的课题。作为有经验的开发者,我们知道从项目之初它就成为一个需要考虑的事。

在使用 Quartz 的 JobStore 时,最大的关注面就是有关于与关系型数据库的交互。数据库 I/O(就像文件 I/O) 通常不是很快。你可以通过采取一些措施,如调优 SQL、增加索引和操作表和列等来改善性能。因为性能问题在写 Quartz 框架的时候就已有考虑到,而你又不想在未出现实际的性能问题时扎入到 Quartz 中做些手脚,那么可试图通过配置来解决它,或者尝试所有可能的方式,只要不是维护源代码。最好的消息是 Quartz 是开源的,你完全可以窥入其中了解它做了什么和如何实现的。假如你不喜欢它现有的查询数据库的方式,你有权去修正它。不过,在你采取行动之前,确定检查了 Quartz 论坛上的用户和开发者,看看是否其他人也遇到了相关的问题并浏览推荐的做法。 阅读全文 >>

Quartz Job Scheduling Framework[翻译]第六章. Job 存储和持久化 (第六部分)

十二. 为 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 还是继续要两个数据源。

阅读全文 >>

Quartz Job Scheduling Framework[翻译]第六章. Job 存储和持久化 (第五部分)

十. 使用数据库存储 Scheduler 信息

·加载 Job 到数据库中

在前面有一节,"使用内存存储 Scheduler 信息",我们谈到关于在使用 RAMJobStore 时如何加载 Job 和 Trigger 信息到内存中。那么  Job 和 Trigger 又是如何加载到数据库中的呢?存在以下几个方法把 Job 信息存入到数据库:

    · 在你的程序中加入 Job 信息

    · 使用 JobInitializationPlugin

    · 使用 Quartz Web 应用程序

我们在前面的 RAMJobStore 章节中讨论过前面两种途径。当它们用于 JDBC JobStore 时,并没有多大不同,只些许例外。首先,你需要知道,当使用这两个方法式,Job 信息是在数据库中的。甚至在你停止了程序后,这些信息仍然保留在数据库中。甚至是你不在你的程序中使用 JobInitializationPlugin 时,这些信息也还在数据库中。基于这一点,它是会从数据库中找寻 Job 信息。第八章涵盖了 JobInitializationPlugin 和常用的 Quartz 插件。 阅读全文 >>

Websphere Application Server (WAS) 中应用的哪一个 web.xml 在起作用

从 Tomcat 再到使用 Webshpere Application Server (WAS) 不光金钱上付出太多(这当然不用我操心),精力上也费神的多,不过收获也不少,特别是商业产品在处理大用户量的并发访问能力是 Tomcat 无法比的。这里记述一个使用 WAS 给应用打补丁时遇到的问题--要更新哪一个 web.xml。

为便于描述,我们假设已在 WAS 下部署了一个名叫 Prod.war 的包(你也可以部署一个 ear 包,部署的 ear 包后的目录名更明确一些),WAS 的安装目录表示为 WAS_HOME,WAS 所在的主机名为 unmi,那么 Prod.war 部署后所在的目录就是

WAS_HOME/installedApps/unmi/Prod_war.ear/Prod.war

用过 WAS 的人都知道,如果是部署后要给应用打补丁的话,和 Tomcat 下的应用一样,也是把类或 JSP 拷到如上相应的目录中就行了,换了类,WAS 会自动重新加载。 阅读全文 >>

Quartz Job Scheduling Framework[翻译]第六章. Job 存储和持久化 (第二部分)

四. 使用持久性的 JobStore

在很多方面,JobStore 有用内存来存储的,还有些使用某种能长期持久的方式来共享相拟的特征。这不该有什么惊奇的,因为他们都服务于同一目的。

RAMJobStore 一样,特久性的 JobStore 有优点也有其缺点。在你选择持久性的 JobStore 之前应该认真理解其利与弊。这节就来解释它们的区别,以及在什么情况下你会希望使用持久性的 JobStore

目前,Quartz 提供了两种类型的持久性 JobStore,每一种类型都有其独特的持久化机制。 阅读全文 >>

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

六. 介绍 Quartz Web 程序

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

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

利用 Ant 的 SQL Task 来实现自己的 Java 执行 SQL 脚本文件的功能

前面记载过一篇 Java 执行 SQL 脚本文件,这里边完全是由自己写代码来分离出脚本中的每一个 SQL 语句的,有不少缺陷。当时还不太清楚 ANT 本身提供了功能很强的执行 SQL 语句和脚本的 SQL Task 可用。以下依次简单介绍如何在 build.xml 中执行 SQL 语句或脚本;Java 代码中如何调用 ant 的 SQLExec 类执行 SQL 脚本,最后考虑  ant.jar 的个头说大也不小,1M 多,如果只用于执行 SQL 脚本,则绝大部分代码就是垃圾,所以从同抽离出需要的两个类 JDBCTask 和 SQLExec,完全去除了对 ant.jar 包的依赖。

有关 ant 的更详细的记录请参见,http://ant.apache.org/manual/CoreTasks/sql.html阅读全文 >>

在 Windows 平台下从硬盘安装 Ubuntu Linux 7.10(alternate)

Ubuntu 8.0.4 已在万众企盼当中,本月 4 月 24 日正式发出,代码版本已封闭。继续写一个 Ubuntu Linux 7.10(alternate) 似乎十分多余,那就留给届时还会怀念 Ubuntu 7.10 的人士,也给自己留个底吧。

当然,每写个东西,总是要负责的,非轻率地转抄,终以本人实践真实记录。前面有篇是讲 Ubuntu 7.10(Desktop) 的安装,在 Windows 平台下从硬盘安装 Ubuntu Linux 7.10(Desktop),这里记载的是 Ubuntu 7.10(alternate) 的安装,是通过 grub4dos 来加上一个 Ubuntu 启动项,从而能从更盘引导。个人也更偏爱于用 alternate 版的光盘来安装,安装其他 Linux 发行版养成的习惯。 阅读全文 >>

VMware+Linux AS4 为虚拟机新增了硬盘,该如何加载?[摘]

VMware 中安装了 Linux 后,又给这个虚拟机增加一个硬盘,假设选的类型是 SCSI, 进到虚拟机系统中应如何加载呢?

其实这后 Linux 新加了一个物理硬盘是一回事,做法如下:

在服务器上把硬盘接好,启动linux,以root登陆。

比如我新加一块SCSI硬盘,需要将其分成三个区:

#fdisk /dev/sdb
进入fdisk模式:
Command (m for help):p //查看新硬盘的分区
Command (m for help):n //创建新分区 阅读全文 >>

WAS 安全性中定制用注册表,通过 JDBC 验证用户实现 SSO

通常 Websphere Application Server (WAS) 都是结合 LDAP 来对用户对行验证,实现单点登陆的。因为 LDAP 有着一个得天独厚的优势,它对查询进行了优化,因此 WAS 理所当然的提供了对 LDAP 十分完善的支持。从 WAS 控制台进 安全性->用户注册表->LDAP,在类型里可以看到支持 IBM_Directory_Server、SecureWay、Sun ONE、Domino、Active_Directory、eDirectory 还可定制 LDAP 连接。

好,就此打住,我在这里要介绍的是如何配置 WAS 控制台和应用通过 JDBC 来验证用户。这一想法产生的背景是:公司原所有系统是通过 Portal 做的集成,配置 LDAP 便能实现 SSO,但有一个新的项目暂不能通过 LDAP 来验证,但也要能实现 SSO,于是就意思到要用 JDBC 来进行用户验证。你也许已注意到在 安全性->用户注册表 下除了 本地 OSLDAP 外,还有一个 定制。我们就是要在这个 "定制" 上做文章的。下面详细具体步骤。 阅读全文 >>