The Tomcat Servlet/JSP Container

Apache Tomcat 5.5 Servlet/JSP 容器

Jaxmao Logo

Links

Contents

应用开发人员指南

开发过程(Development Processes)

Printer Friendly Version
print-friendly
version
Development Processes

尽管可以采取多种形式来进行应用开发, 这个手册提议以一种标准样本处理方式来利用Tomcat产生web应用程序。以下部分着重强调了作为编程开发人员将执行的命令和任务。只要你有一个适当的源代码控制系统,以及内部条文规定什么人在什么时间内做哪一部分工作,那么当你有多个程序员一起开发程序时,这种基本的处理方法应该行得通。

下面对于工作程序的描述是假设你将使用CVS作为源代码控制系统,以及你已经配置好了相关CVS贮藏库的通路。关于使用和配置CVS的说明超出了本手册的范围。如果你使用不同的源代码控制环境,你要自己弄清楚那个系统的相关命令。

One-Time Setup of Ant and Tomcat for Development

为了使用和管理员(Manager)网络程序相互作用的特别Ant任务,你需要执行一次以下的任务(不管你计划要开发多少个web程序)。

  • 配置Ant custom tasks 。关于Ant custom tasks 的实施代码是在一个叫做$CATALINA_HOME/server/lib/catalina-ant.jar的JAR文件里,它必须被复制到ant安装目录的lib目录中。

  • 定义一个或多个Tomcat用户。管理员(Manager)这个网络程序有安全限制,它要求用户必须注册登记(logged in),并具有Manager指派的安全职责。 怎样定义这些用户依赖于你在Tomcat's conf/server.xml文件里配置的领域(Realm)——更多信息请参看Realm Configuration HOW-TO。管理员(Manager)可以定义任何数目的用户(任何用户名称和密码)。

Create Project Source Code Directory

第一步就是要产生一个新的项目源目录,并客户化需要使用的build.xmlbuild.properties 文件。关于目录结构(directory structure)在上一章有描述,或者你可以使用sample application作为一个起始点。

产生一个项目源目录,并把它定义在你的CVS 贮藏库之内。这可以通过下面这样一系列命令来实现,这里{project}是指你储存在CVS 贮藏库中project的名称,{username}是指你的登录用户名称。

cd {my home directory} 
mkdir myapp   <-- Assumed "project source directory" 
cd myapp 
mkdir docs 
mkdir src 
mkdir web 
mkdir web/WEB-INF 
cvs import -m "Initial Project Creation" {project} \ 
   {username} start

现在, 我们来执行一次checkout这个新项目,以核实它在CVS里被正确地产生了。

cd .. 
mv myapp myapp.bu 
cvs checkout {project}

再次, 你将需要产生和登记一个初始版本的 build.xml script来用作软件开发。要简易快捷地开始,你可以在这个手册里的basic build .xml 文件基础上产生build.xml,或者从头开始编码它。

cd {my home directory} 
cd myapp 
emacs build.xml      <-- if you want a real editor :-) 
cvs add build.xml 
cvs commit

直到你执行CVS commit之前, 你的这些变动还是局限在你自己的开发目录。Committing使得共用同一CVS 贮藏库的同组的其它开发人员可以看得见你的这些更改。

下一步就是要把build.xml script里命名的Ant属性(properties)客户化。这需要在你的项目的上层目录产生一个叫做build.properties的文件。Tomcat支持的属性(properties)被列出在样本build.xml script的注释中。至少,你必须定义catalina.home的属性,这个属性指出了Tomcat 5 被安装在哪里以及管理员程序里的用户名称和密码。你的编码也许象这样:

# Context path to install this application on
app.path=/hello

# Tomcat 5 installation directory
catalina.home=/usr/local/apache-tomcat-5.5

# Manager webapp username and password
manager.username=myusername
manager.password=mypassword

通常,你要把这个build.properties 文件存入CVS 贮藏库, 因为它对每个开发人员的工作环境来说都是特定的。

现在, 产生初始版本的网络应用调度描述符(web application deployment descriptor)。你可以在basic web. xml 文件基础上产生web.xml,或者从头编码它。

cd {my home directory} 
cd myapp/web/WEB-INF 
emacs web.xml 
cvs add web.xml 
cvs commit
注意,这只是一个web.xml 文件的例子。Servlet 规范里对调度描述符(deployment descriptor)文件有完整的定义。
Edit Source Code and Pages

Edit/build/test(编辑/建造/测试)是开发和维护中最常见的活动。以下一般性原则适用。如源代码组织(Source Organization)所描述,新产生的源文件应该被放在项目源目录之下适当的subdirectory。

当你要把其他开发人员的工作加入到你的开发目录时,就让CVS执行下面的任务:

cd {my home directory} 
cd myapp 
cvs update -dP

要产生一个新文件,到相关的目录产生这个文件并在CVS注册(register)它。当你(在创建和测试成功之后)对它的内容感到满意,你就把这个新文件commit给贮藏库。例如,下面来产生一个新的JSP页面:

cd {my home directory} 
cd myapp/web      <-- Ultimate destination is document root 
emacs mypage.jsp 
cvs add mypage.jsp 
... build and test the application ... 
cvs commit

被定义在包裹(packages)里的源代码必须要被组织成一个和包裹名称相对映的目录阶层(在src/ subdirectory之下)。 例如,一个叫做com.mycompany.mypackage.MyClass.java 的Java类,必须被存放在文件src/com/mycompany/mypackage/MyClass.java 里面。不论你什么时候产生一个新的子目录,别忘记去CVS注册

要编辑一个现有源文件, 你一般只是开始编辑并且测试, 当程序全都能正常运作后再把这个被改变的文件commit。虽然CVS可能被配置成要求你"check out" 或"lock" 你将修改的文件,但通常我们不这样做。

Build the Web Application

当你准备好编译你的程序时, 发布以下命令(通常, 你打开一个指向项目源目录的shell窗口,这样一来只需要使用最后一句命令):

cd {my home directory} 
cd myapp      <-- Normally leave a window open here 
ant

Ant工具会在你的build.xml文件执行缺省"compile"目标,从而编译任何新的或更新过的Java 代码。如果这是你在"build clean"后第一次编译,它将导致所有的程序被重新编译(recompiled)一次。

要强制执行重新编译全部程序,应用下面的命令:

cd {my home directory} 
cd myapp 
ant all

在checking in 更改之前这样做是个非常好的习惯,这样可以确保不会产生一些Javac的conditional检查没有捕捉住的任何微妙问题。

Test Your Web Application

要测试你的程序,你要把它安装在Tomcat 之下。最快捷的方法就是使用样本build.xml script里的用户Ant任务。也许可以象这样使用这些命令:

  • 按需要启动Tomcat 5。如果Tomcat 5 已经不在运行,你需要按常规启动它。

  • 编译你的程序。使用这个ant compile命令(或者仅仅ant,因为这是缺省命令)。确准没有编辑错误。

  • 安装程序。使用ant install 命令。这个命令告诉Tomcat立刻在context path 上运行你的程序,app.path build 属性里对context path有定义。Tomcat要被重新启动就能生效。

  • 测试程序。使用你的浏览器或者其它测试工具, 测试你的程序的功能。

  • 根据必要修改(modify)和重建(rebuild)。当你发现需要进行更改时,去原始的源代码文件(original source files)进行修改,而不是在output build 目录,然后再使用ant compile命令。这就保证了你的变动能在以后被保存下来(通过cvs commit)—— output build 目录根据需要会被删除和被再创造。

  • 重新装载你的程序。Tomcat自动地识别JSP页面里的变化,但它将继续使用老版本的servlet 或 JavaBean classes直到你的程序被重新装载为止。你能通过执行ant reload命令使其发生。

  • 完成所有过程后删除你的程序。当你完成所有过程之后,使用ant remove 命令把你的程序从现场执行(live execution)中删除。

当你完成测试后,别忘记把更改过的文件commit到源代码贮藏库去!

Creating a Release

当你完成了添加新功能到你的程序中去,又测试了所有的东西,下面就可以产生一个distributable 版本的网络程序了,这个版本可被调度到生产服务器(production server)上去。以下通常的步骤是需要的:

  • 从项目源目录里发出ant all 命令,来最后一次rebuild 所有程序。

  • 使用cvs tag 命令为所有在发行版里所用到的源文件产生一个标识符(identifier)。这允许你在以后可以可靠地(从源代码文件)重新产生一个发行版本。
  • 发出ant dist命令来产生一个可发布的网络应用档案(WAR)文件,和包含对应的源代码的JAR文件。

  • 根据你们公司(组织)使用的标准发行规程,用tar或者zip共用程序包装这个dist目录里的内容。

Copyright © 1999-2006, Apache Software Foundation