Shale 没有像 Struts 请求处理器那样的中心组件,它只是一组数量很多的服务。可以自由组合这些服务,每个服务与其他服务之间是松散耦合的。通过一组良好定义的接口(有时候实际上就是 Java 接口类,有时候只是组件之间某种形式的契约),配置 Shale 的行为很容易。这使得 Shale 是可扩展的、灵活的,甚至是 “聪明的”。很容易更改它,不费吹灰之力就可以扩展它,并可以使它迅速适应新的编程方法。像这样松散地组装组件或服务通常被称作面向服务的架构,或简称 SOA。当然,这听起来有点儿玄乎,不过您大可不必因此而觉得 Shale 不好!安装 Shale可以从逻辑上和概念上理解 Shale 与 Struts 的不同之处,但是要想在脑海里弄清楚这两种伟大的框架有什么不同,则需要亲自动手去实践一番。很自然,每一种 Web 框架首先都需要下载和安装。不过幸好,在这个过程中通常可以了解到很多东西。那些安装和设置起来比较困难的项目和产品,通常也难于配置,难于在它上面进行部署,并且(最坏的情况)难于长久运行。虽然安装过程很难作为评价一个 Web 框架好坏的最可靠手段,但是至少肯定应该成为这个标准的一部分。在这一节中,您将学习手动地安装 Shale,对于一些难点有一定的体会,并了解为了使 Shale 运行,系统上需要些什么东西。注意,我还提到了 Shale 的 简便安装 选项,但是我强烈建议您至少试一试手动安装,了解它提供的较深层的信息。先决条件Shale 的先决条件和需求相当多。和大多数与 Apache 和 Jakarta 相关的项目一样,Shale 的安装要依赖于一些其他的 Jakarta 项目。下面是为了使 Shale 得以运行所需的所有东西的完整列表:Java Runtime Environment(JRE)和 Java Development Kit(JDK) 1.4 或更高版本
Java Servlet API 2.4 或更高版本
JSP 2.0 或更高版本
JSF 1.1 或更高版本
JSP Standard Tag Library(JSTL) 1.1 或更高版本
Jakarta Commons BeanUtils 1.7 或更高版本
Jakarta Commons Chain 1.0 或更高版本
Jakarta Commons Digester 1.7 或更高版本
Apache Logging 1.0.4 或更高版本
Apache Ant 1.6.3 或更高版本
Apache Ant 只是在构建 Shale 时要用到,但是无论如何,如果您要进行较多的 Java 开发,那么系统上还是需要(很可能已经有了)一个版本的 Ant。如果想跟踪 Shale 中的 bug,那么需要 FindBugs 0.8.5 或更高版本和 JUnit 3.8.1 或更高版本。由于在第 1 部分中我只是讨论 Shale 的安装和使用,因此您还不必关心 FindBugs 或 JUnit,除非您想早点儿装上这两个项目。附件和它们的依赖项和 Struts 一样,Shale 还有一些附件(在 Shale 中常被称作可选 Shale 组件),这些附件各自又有其依赖项:Jakarta Commons Validator 1.2 或更高版本
Spring Framework 1.2.2 或更高版本
Struts Tiles Framework(独立版本)如果说这份列表显得有些长并且令人生畏的话,那么没错!Shale 使用大量较低级的库、helper 类、实用程序组件和来自其他项目的类。如果必须逐个安装这些组件,配置 Shale 使用它们,并将所有这些组件组装成可以部署的某种形式的话,即使是最专业的开发人员也会对 Shale 望而生畏。此外,由于 Shale 在它的开发圈子内仍然相当年轻,对于这些依赖项的获得和配置仍然有些稚嫩;然而,Shale 确实是非常可行的,而且不需要花费您想象中那么多的精力。首先,如果您正在用某种框架从事某种 Web 开发,那么应该已经有了一些作为依赖项的项目。所以这份列表比它初看上去要容易管理得多。例如,任何 Web 开发人员都应该已经有 JRE 和 JDK,也应该有一个 servlet 引擎,例如 Jakarta Tomcat。如果已经有一个 servlet 引擎,那么也应该有 Servlet API 和 JSP 引擎。另外,大部分 servlet 引擎(至少就当前版本而言)都包括一个 JSTL,并且很多都附带了 JSF。最后,大多数开发人员很可能在他们的机器上已经安装了 Ant。因此,这份列表很快就只剩下这些了:JSF 1.1 或更高版本 (servlet 引擎中可能已经附带了)
JSTL 1.1 或更高版本 (servlet 引擎中可能已经附带了)
Jakarta Commons BeanUtils 1.7 或更高版本
Jakarta Commons Chain 1.0 或更高版本
Jakarta Commons Digester 1.7 或更高版本
Apache Logging 1.0.4 或更高版本
考虑到 Tapestry 实际上提供了将它的所有依赖项附带下载的选项,因此 “太多依赖项” 的问题很快就不成为问题了。现在您已经知道了大概,现在我们来看看下载、安装和配置 Shale 及其依赖项的步骤。1. 下载 Shale要下载 Shale,可访问 Shale 项目主页。您可以看到一个 “Shale Download” 区域,其中有 Shale 框架的每晚构建的链接。单击这个链接,便可以进入如图 1 所示的一个站点: