隔叶黄莺 The Blog of Unmi

〖隔叶黄莺三四声,挂壁飞瀑千万尘。若是人间无净土,此处为何妙语真! 隔叶黄莺四字,本非取自此句,而有寄寓他意,因见妙语,亦与予心合!〗

BlogJava 首页 新随笔 联系 聚合 管理
  418 Posts :: 105 Stories :: 1367 Comments :: 0 Trackbacks

11 2007 档案

     摘要: 曾经也因项目中一时之用接触过好几种动态脚本语言,但无一不是忘得几无痕迹。PHP做过几个项目、TCL/TK 是制作 IPMI 驱动安装程序之用,它有较小的解释器,并具带着桌面工具集 TK,做界面程序也方便。

提起 Perl,先前对它是有过两次的亲密接触,一次为自我修练,第二次为实现一个 Java 版的 Webmin 时,大量的参考了 Webmin 的 Perl 代码,最强烈的印象是彻底为它的正则表达式写法所征服了,从此对它也是藕断丝连。  阅读全文
posted @ 2007-11-29 22:46 隔叶黄莺 阅读(922) | 评论 (0)  编辑

     摘要: 6. 创建 RMI 客户端

你需要创建一个客户端,用来调用远程 Quartz 调度器上的方法。客户端会同 RMI 注册服务器进行通信,进而定位到远程调度器对象,然后就能够调用其中的方法了。这些包括有暂停和停止调度器、部署和卸下 Job,和执行所有其他对与远程客户端可见的方法。

·配置 Quartz RMI 客户端

类似于表 9.1 所示服务端的配置,表 9.2 所列出的属性也是必须加到 Quartz RMI 客户端的。这两份属性列表必须分别应用到服务端和客户端的。  阅读全文
posted @ 2007-11-27 00:50 隔叶黄莺 阅读(1790) | 评论 (2)  编辑

     摘要: 二:Windows 下创建软链接,NTFS 只支持对目录的软链接,微软把它称作 junction。但是对于文件的软链接,微软也有提供解决方案,那就是快捷方式(Shortcut,.lnk 文件)。不过软链接和快捷方式不是一个层次上的东西,前者是底层文件系统的功能,后者是应用层的功能。Windows 下目录的快捷方式用 dir 看起来是个文件。

在 http://www.microsoft.com/technet/sysinternals/FileAndDisk/Junction.mspx 下载 junction.exe。junction 的命令语是:

junction LinkDirectory ExistingDirectory

例如:junction d:\link c:\winnt

将为c:\winnt 建立一个链接目录 d:\link,C和D分区都要是 NTFS 格式,在资源管理器和 dir 列示中 d:\link 都以目录的面目存在的。d:\link 就像是 c:\winnt 的一个引用一般,删除 d:\  阅读全文
posted @ 2007-11-26 01:04 隔叶黄莺 阅读(2179) | 评论 (4)  编辑

     摘要: 4. 创建 Quartz RMI 服务端

你务必按几个步骤来配置 Quartz 来使用 RMI。其中的一些步骤会在创建 Quartz RMI 服务端用到,还有些步骤会在 Quartz 客户端连接服务端。我们先来阐述服务端的配置步骤。

·配置 Quartz RMI 服务端

第一步就是修改要部署到 Quartz RMI 服务端的 quartz.properties 文件。当在 Quartz 中使用 RMI,你还必须添加几个新的属性。表 9.1 包括了完整 RMI 属性列表。
  阅读全文
posted @ 2007-11-23 00:13 隔叶黄莺 阅读(2105) | 评论 (0)  编辑

     摘要: 第九章. 使用 Quartz 的远程方式

以独立方式运行的 Quartz 应用程序,仅限于在 JVM 内部访问调度器。和其他任何 J2SE 程序一样,不使用其他某种机制的话,是决不允许从外部访问 JVM 中的对象的。

幸运的是,有几种技术(机制) 可让你做到这一点。Quartz 框架很好的支持其中一种机制--远程方法调用(RMI)。本章就是关注于如何部署 Quartz 为一个 RMI 服务,以便于你能够从 JVM 外部访问到调度器。这样做有几个好处,这也是我们本章要讨论内容。
幸运的是,有几种技术(机制) 可让你做到这一点。Quartz 框架很好我支持其中一种机制,远程方法调用(RMI)。本章就是关注于如何部署 Quartz 为一个 RMI 服务,以便于你能够从 JVM 外部访问到调度器。这样做有几个好处,这也是我们本章要讨论内容。  阅读全文
posted @ 2007-11-22 00:20 隔叶黄莺 阅读(1851) | 评论 (7)  编辑

     摘要: 4. 打包 Quartz 应用程序

让我们最后简单讨论打包一个用到了 Quarts 框架的应用程序的流程,也以此来结束本章的内容。

·Quartz 第三方依赖包

从 1.5 版的发行包开始,你会看到一个 \lib 目录,在这个目录,你会发现几个子目录:

·\lib\core

·\lib\optional

·\lib\build  阅读全文
posted @ 2007-11-17 22:16 隔叶黄莺 阅读(2658) | 评论 (4)  编辑

     摘要: 3. 声明式部署一个 Job

前面我们讨论过,尽可能的用声明式处理软件配置,其次才才虑编程式。再来看代码 3.6,如果我们要在 job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译。这种方式只适用于小的例子程序,但是对于一个大且复杂的系统,这就成了一个问题了。因此,假如能以声明式部署 Quart Job 时,并且也是需求允许的情况下,你应该每次都选择这种方式。

要在我们的例子中声明式配置调度器信息,我们会用到一个 Quartz 自带的叫做 org.quartz.plugins.xml.JobInitializationPlugin 的插件。

默认时,这个插件会在 classpath 中搜索名为 quartz_jobs.xml 的文件并从中加载 Job 和 Trigger 信息。

·使用 quartz_jobx.xml 文件

代码 3.8 就是目录扫描例子的 Job 定义的 XML 文件。正如代码 3.5 所示例子那样,这里我们用的是声明式途径来配置 Job  阅读全文
posted @ 2007-11-17 16:25 隔叶黄莺 阅读(3829) | 评论 (7)  编辑

     摘要: 在上一篇 重定向System.out和System.err到JTextPane,分别用黑色红色显示 中讲了如何把 System.out 和 System.err 重定向到 JTextPane 上,并分不同颜色显示,其中用到了 PipedInputStream、PipedOutputStream。那个例子还是参考的 《The Java Developers Almanac 1.4》,翻译出来叫做 《Java 开发者年鉴 1.4》,显得多么的权威啊,我当时还真把它看成官方最佳推荐实现了,太迷信了。

可是现在看来,前面那个实现不仅代码繁琐,而且是 Bug 多多。现在重新对上回的 ConsolePane 来个新的更简洁高效的实现

能解决的问题恰恰就是上面遗留下来的1、2、3:
1. 不再产生 java.io.IOException: Write end dead 异常
2. 输出时不再会缺几个字母,或产生空行了
3. 输出顺序根据程序执行先后能得到保证  阅读全文
posted @ 2007-11-16 00:41 隔叶黄莺 阅读(1288) | 评论 (1)  编辑

     摘要: 到目前为止,我们已经创建了一个 Quartz job,但还没有决定怎么处置它--明显地,我们需以某种方式为这个 Job 设置一个运行时间表。时间表可以是一次性的事件,或者我们可能会安装它在除周日之外的每个午夜执行。你即刻将会看到,Quartz Schduler 是框架的心脏与灵魂。所有的 Job 都通过 Schduler 注册;必要时,Scheduler 也会创建 Job 类的实例,并执行实例的 execute() 方法。
Scheduler 会为每一次执行创建新的 Job 实例

Scheduler 在每次执行时都会为 Job 创建新的实例。这就意味着 Job 的任何实例变量在执行结束之后便会丢失。与此相反概念则可用述语有状态的(J2EE世界里常见语)来表达,但是应用 Quartz ,一个有状态的 job 并不用多少开销,而且很容易的配置。当你创建一个有状态的 job 时,有一些东西对于 Quartz 来说是独特的。最主要的就是不会出现两个有着相同状态的 Job 实例并发执行。这可能会影响到程序的伸缩性。这些或更多的问题将在以后的章节中详细讨论。
  阅读全文
posted @ 2007-11-11 21:33 隔叶黄莺 阅读(3715) | 评论 (16)  编辑

     摘要: 把 System.out 和 System.err 重定向到 JTextArea 的做法在网上能找到不少,由于 JTextArea 不能用不同的字体分别显示内容。但我还是希望能象 Eclipse 控制台那样,标准输出为黑色,错误信息为红色,于是选择了 JTextPane 作为输出目的地。线程之间通信息用到了 PipedInputStream 、PipedOutputStream 和 SwingUtilities.invokeLater(new Runnable()。

自定义了一个 JScrollPane,类名为 ConsolePane,写成的单例类;使用时只需要在你的面板上加上 ConsolePane组件,例如:getContentPane().add(ConsolePane.getInstance(), BorderLayout.CENTER);

像控制台那样也设置了最大输出缓冲行数,当超过一定行数后会自动把前面的若干行删除,防止内存占用过大。

作为自己应用程序的输出控制台还是不错的,捕获 Log4J 的输出,要选用  阅读全文
posted @ 2007-11-10 21:52 隔叶黄莺 阅读(1071) | 评论 (1)  编辑

     摘要: 这种情况通常是发生在换了另一份 Eclipse 拷贝之后。之前一般都能正常在 Eclipse 中执行 Ant 脚本,删除了原来的 Eclipse 之后换了另一个拷贝或者是新版本,在其中执行 Ant 脚本时弹出窗口出现以下错误:

---------------------------
Java Virtual Machine Launcher
---------------------------
Could not find the main class. Program will exit.
---------------------------
确定
---------------------------  阅读全文
posted @ 2007-11-09 13:01 隔叶黄莺 阅读(3682) | 评论 (5)  编辑

     摘要: StrutsConfigHelper 小工具方便你对一个或多个 StrutsConfig 文件按条件查找各要素。在 《忙里找闲,自写了一个StrutsConfig配置文件条件查找工具》 一文章有对该工具的介绍。

软件为适宜之作,如果它确实对你毫无用处,你大可当它是垃圾,不因作者付出很大的苦劳,而勉强去接受;也许它还能给你带来些便利,那就体现了它的价值。

StrutsConfigHelper 旨在专注于某一个方面,尤其是根据网页链接快速定位到相关 Action 类,JSP 页面,ActionForm 有用,再稍稍辅以其他功能。

此次升级主要是加上了 XML 代码的着色显示功能,和根据 Windows 用户的使用习惯重新整理上下文菜单项。  阅读全文
posted @ 2007-11-07 00:03 隔叶黄莺 阅读(723) | 评论 (3)  编辑

     摘要: 第三章:Hello Quartz

多数读者都较容易从一个简明扼要的例子中明白一个东西。作为写作者,要注意避免把一章的内容精简地几乎什么都没了;作为读者呢,需要有耐心并且要进一步相信其后相关的章节应该去阅读,尽管这个例子看起来是如此之简单。

有了这种初衷,这一章将为你介绍如何用 Quartz 框架创建一个简单的应用程序,它展示了一个典型的应用。这个例子将让你领略到创建和执行一个简单应用的必要步骤。通过本章的学习,为你学习本书的后续章节打下了坚实的基础。

1. "Hello, World" Quartz 工程

本示例应用比起众所周知的 System.out.println("Hello world from Quartz") 来还是要有趣些。当我们用 Quartz 执行一个作业时,总是希望它能为我们执行一些有趣且有意义的任务。因此,接下来我们就要  阅读全文
posted @ 2007-11-03 01:54 隔叶黄莺 阅读(3795) | 评论 (10)  编辑