科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Struts的后代:Shale不是Struts

Struts的后代:Shale不是Struts

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Shale 不是什么?Shale 不是打包好的、有编制好的文档并经过严格测试的产品,也没有附带自动安装程序和优雅的管理界面。那么 Shale 到底是什么呢?Brett McLaughlin 在本文中将揭开这个 Struts 后代的面纱。在本文中。

作者:中国IT实验室 来源:中国IT实验室 2007年9月24日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

  构建 WAR 文件

  如果使用的 servlet 引擎要求提供 WAR 文件,那么可以使用相同的 Shale starter 应用程序的构建文件,只需略微修改一下。由于还没有为这个 Shale 应用程序编写任何 Java 文件,当您请求一个 WAR 文件时,构建脚本将出现错误(在 build.xml 中有查找文件的 JavaScript 命令,但是没有找到任何文件)。为了修复这个问题,打开 build.xml 文件,找到以 “javadoc” 开头且如下所示的代码:


             description="Create JavaDocs">

   

                sourcepath="${src.java.dir}"
               destdir="${build.docs.dir}"
                author="false"
               private="true"
               version="true"
                source="${project.source}"
          packagenames="${project.package}.*"
           windowtitle="${project.name} (Version ${project.version})"
              doctitle="${project.name} (Version ${project.version})"
                bottom="${project.copyright}">
     
   

   
                    includes="**/*.gif"/>
   

 

  现在,注释掉 javadoc 任务,如下所示:

 
             description="Create JavaDocs">

   
<
                sourcepath="${src.java.dir}"
               destdir="${build.docs.dir}"
                author="false"
               private="true"
               version="true"
                source="${project.source}"
          packagenames="${project.package}.*"
           windowtitle="${project.name} (Version ${project.version})"
              doctitle="${project.name} (Version ${project.version})"
                bottom="${project.copyright}">
     
   
-->
   
                    includes="**/*.gif"/>
   

 

  一旦开始为 Shale 应用程序开发 Java 代码,便不必这样做。不过对于现在,这样做可以解决上述问题。保存修改后的 build.xml 并运行 ant dist。Ant 编译和装配 starter 应用程序,并在 dist/ 目录中创建一个新的 WAR 文件。例如,我运行 ant dist 后得到一个 dist/first-shale-0.1.war 文件。现在可以将这个 WAR 文件复制到 servlet 引擎的 webapps/ 目录。

  测试安装情况

  如果完成了以上步骤,不管选择的安装路径是什么,都应该可以启动 servlet 引擎并通过地址 http://your.host.name/first-shale 访问 Shale 应用程序。例如,如果在本地机器上运行 Tomcat,那么最终可以访问的地址是 http://localhost:8080/first-shale。如果一切正常,那么应该可以看到如图 2 所示的简单页面:

  图 2. Shale starter 应用程序证明一切没问题

  看起来似乎做了这么多工作却所得甚少,但是要考虑到,通过打开并编辑一个简单的 build.properties 文件,可以避免大量繁杂的复制和配置工作。您将发现,从空白的 Shale starter 应用程序开始总是开发新的 Shale 应用程序最容易的方式。实际上,当在下一篇文章中开始开发 Shale 应用程序的时候,将使用空白的 starter 应用程序作为开始的基础。

  Shale 用例

  关于 Shale 的下载和安装就介绍到这里,不过我们还是再花点儿时间从 Shale 主下载站点下载 Shale 的用例 WAR 应用程序。找到一个文件名形如 shale-usecases-20060204.war 的文件。下载该文件,并将它放入 servlet 引擎的 webapps/ 目录,然后进入到这个 WAR。在我的系统上,访问 http://localhost:8080/shale-usecases-20060204/ 并得到如图 3 所示的屏幕:

  图 3. Shale 用例应用程序

  您应该花些时间来看看这个用例应用程序。它有关于 Shale 中 Validator 和远程报告等特性的很好的演示,并有一个简单的 Ajax 应用程序。通过浏览这些用例,您可以了解到即使是简单的 Shale 应用程序也可以做许多事情。

  不过这里要提一个忠告:有些用例仍在开发中,取决于您何时下载每晚构建,可能发现有些用例不能正常工作。不过总是可以晚些时候再下载这些用例应用程序,看看有些问题是否已经被修复。虽然存在这些小问题,但是用例应用程序仍然是取得对 Shale 的基本印象的一种好途径。

       深入研究 Shale!

  大多数 Web 开发人员向来只是使用已有的框架(例如 Shale、Struts 或 Spring)来开发他们的 Web 应用程序,而没有做别的事情。当然这没有什么错,但是如果想理解一种框架以及它所涉及的技术,那么只能对框架本身做深入的研究。

  对于 Shale(当然也包括 Struts),通过查看框架的内部,您可以学到大量关于 servlet 和 Web 开发的知识。如果想在自己的项目中使用一些 Shale 依赖项,这样做还可以获得难以置信的帮助。如果您对通过 Java 应用程序进行日志管理感兴趣,那么通过 Shale 来熟悉 Apache Logging 项目比阅读任何文章都要有效得多。对于 Jakarta Commons BeanUtils、Chain 或 Digester 项目也是一样。这些都是很好的工具,对于开发人员很有用,所以花几个星期或几个月的时间探索一下 Shale 对于这些领域是一个很好的学习经历。

  由于本文是对 Shale 进行深入探讨的系列中的第一期,因此如果我不对几个对于 Shale 项目入门来说至关重要的方面进行讨论的话,就是不负责任了。

  亲密接触源代码

  不幸的是,关于 Shale 中涉及的开发过程的文档并不多,所以如果您想直接使用 Shale 源代码的话,需要用点儿技巧。一般来说,我这里给出的关于下载 Shale 并将它作为框架使用的说明也适用于下载 Shale 的源代码。每晚构建包含 Shale 的所有源代码,并且代码的每个目录中都有一个 build.xml 文件。

  需要将下载的 Shale 的根目录下的 build.properties.sample 文件复制到一个名为 build.properties 的文件中(去掉原始文件名尾部的 “.sample”)。清单 2 展示了这个文件的一个示例,为了简洁起见,这里省略了其中一些注释:

  清单 2. 示例 Shale 构建文件

# This file contains example property settings that you would use to customize
# your build environment to build the Struts Shale Library from
# source code.  To use this file, make a copy of it in "build.properties" and
# customize the values as required.

# Root directory into which you have unpacked the Shale Framework release.
root.dir=${basedir}

# Fully qualified pathname of the directory into which you have unpacked
# a binary distribution of the JavaServer Faces Reference Implementation
jsfri.dir=/usr/local/jsf-1_1_01

findbugs.outputFile=${root.dir}/find-bugs.html
lib.dir=${root.dir}/lib
jsf.home = ${lib.dir}/myfaces
jsf-api.jar = ${jsf.home}/myfaces-api.jar
jsf-impl.jar = ${jsf.home}/myfaces-impl.jar

# The absolute or relative pathname of the Apache Struts
# distribution
struts.home = /usr/local/jakarta-struts

spring.home=${lib.dir}/springframework
findbugs.home = /usr/local/findbugs-0.8.6

  为了与您的系统相匹配,需要更改这个构建文件中大部分的路径。默认情况下,${basedir} 指向运行 Ant 时所在的目录,因此如果是从下载的 Shale 的根目录下运行 Ant,那么就刚好不用改路径了。但是对于其他路径,应该改为适当的与系统相匹配的路径。例如,如果您的 JSF 参考实现在 c:/java/jsf-1_1_02 中,那么使用 jsfri.dir 目录所在的路径。大多数默认路径都适合于使用 MyFaces(请参阅 “MyFaces 还是 JavaServer Faces”),但是当然也可以使用 Sun 的 JSF 实现,并对这些路径作相应的更改。另外还需要设置 Struts、Spring(这是可选的,对于核心 Shale 框架来说不必要)和 FindBugs 项目的路径。

  Ant 登场

  设置好这些文件的路径后,就可以在 Shale 的根目录中运行 Ant。但是,首先应该运行 ant download-dependencies。您当然也已经注意到,Shale 有很多 依赖项,而通过使用 Ant 自动下载这些依赖项可以为您节省很多时间,也令您轻松不少。Ant 脚本还负责设置路径,以便使 Shale 与那些依赖项连接起来。还应该运行 ant copy-jsf-ri 来处理一些特定于 JSF 的任务(具体细节不必关心,因为 Ant 会为您打点一切)。

  在构建主 Shale 发行版之前,应该运行 ant clean 删除之前已有的构建后的代码。虽然这意味着整个构建时间会更长,但是可以确保所有代码将一致地构建。最后,运行 ant release,以便从头开始构建 Shale。当这个 Ant 脚本运行完成后(这要花一点儿时间),就可以得到一个完整的、从源代码构建的 Shale 发行版。

  关于邮件列表的只言片语

  开发源码项目几乎完全是通过电子邮件(再加上 Apache bug 跟踪数据库,在 参考资料 小节中有这方面的内容)来运作的。Shale 在这方面也是一样的,不过它仍然使用 Struts 的邮件列表。如果在使用 Shale 时有什么疑问,可以发送电子邮件到 user@struts.apache.org。但是当您开始开发真正的 Shale 内部组件时,应该将电子邮件发送到 dev@struts.apache.org。不管将电子邮件发送到哪里,都应该以 “[shale]” 开头,这样别人一下子就明白您是要问关于 Shale 的问题,而不是关于 Struts 的问题。预期在几个月后,当 Shale 开始成为独立的项目时,它也会有它自己的邮件列表。

  这里稍微提醒一下,尤其是在发送电子邮件到开发列表的时候:做好自己的工作,问题要有的放矢。那些飘忽不定、模棱两可或缺乏思想的邮件很可能不会收到回复。如果您到处发送 “我想学习 Shale,请给我发送一些例子应用程序” 之类的邮件,甚至还可能得到粗鲁的回答。虽然这种提醒看上去有些傻,但事实就是这样。开发列表中总是充斥着这一类的问题,这些问题都是不受欢迎 的。通常,花点儿时间认真地斟酌您的问题,解释一下您使用的平台和软件的版本,并说明您已经试过了一些常用的步骤。这样一来,您的请求才会得到尊重并受到欢迎,也就更容易得到答案。开发人员的列表并不是令人生畏的,但最起码这样做显得您尊重别人。

  结束语

  这个关于 Shale 的系列中的第一期文章说明,Shale 并不适合每一个人。Shale 没有提供一个打包好的、有编制好的文档并经过良好测试的产品,也没有附带自动安装程序和优雅的管理界面,这些都是很多 Web 开发人员期待 Tapestry 时代能提供的东西。虽然在以后版本的框架中会体现这些东西(除了完全打包),但目前 Shale(从 2006 年初起)仍在开发过程中,并且 Shale 站点也基本上将它称为处于 “alpha” 状态的项目。Shale 中使用的很多组件是稳定和成熟的,但 Shale 本身仍然很年轻。如果您不能接受一些麻烦和困惑,那么可能会想过一年左右再开始使用它。

  另一方面,如果您是一名对 Web 开发的前沿技术感兴趣的 Java 开发人员,那么真应该看看 Shale 项目。虽然安装 Shale 并使之工作要花费更多的精力,但是它完全有条件成为特别流行的 Web 开发框架。Shale 继承了 Struts,同时也提供了一些全新的东西,这本身就值得作一番调查。对于有兴趣成为开放源码项目中的一员的开发人员,Shale 也是值得投入精力的一个项目。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章