﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-红玫瑰-文章分类-Tomcat学习笔记</title><link>http://www.blogjava.net/vaga/category/4662.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 19:13:24 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 19:13:24 GMT</pubDate><ttl>60</ttl><item><title>Tomcat 学习笔记</title><link>http://www.blogjava.net/vaga/articles/19001.html</link><dc:creator>vaga</dc:creator><author>vaga</author><pubDate>Wed, 09 Nov 2005 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/vaga/articles/19001.html</guid><wfw:comment>http://www.blogjava.net/vaga/comments/19001.html</wfw:comment><comments>http://www.blogjava.net/vaga/articles/19001.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vaga/comments/commentRss/19001.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vaga/services/trackbacks/19001.html</trackback:ping><description><![CDATA[<P>手册主要涵盖以下内容：应用Tomcat设置开发环境、组织源代码、build和test应用程序(application)，这些是web应用程序开发的基本步骤。<BR>手册不讨论web应用程序开发中的架构或推荐的编程经验等方面的内容，也不准备对讨论中涉及到的开发工具的使用操作提供更深入的说明。对附加资源的参考包含在下面的各小节中。</P>
<P>手册中的讨论，主要是针对那些使用文本编辑工具、加上命令行工具来开发、调试应用程序的开发人员的。如此，这也是一个最基本的建议，如果你正在使用一个IDE工具，那么建议你还是关注一下环境下的底层信息。当然在你使用基于Windows或Unix的开发环境时将更容易了。</P>
<P><A href="http://java.sun.com/products/jsp/download.html">http://java.sun.com/products/jsp/download.html</A> <BR>JSP（JavaServer Pages规范，Version 2.0<BR>此规范说明了标准的JSP技术实现（web容器）应该提供的编程环境。JSP规范和Servlet API规范一起，描述一个可移植的API page中允许包含哪些内容。关于脚本、标签扩展、packaging JSP页等信息也是非常有用的。</P>
<P><A href="http://java.sun.com/products/servlet/download.html">http://java.sun.com/products/servlet/download.html</A> <BR>Servlet API规范，Version 2.4。<BR>此规范说明了所有遵循此规范的servlet容器必须提供的编程环境信息。特别的，你很需要这个文档来理解web应用程序的目录结构、部署文件、映射请求URIs到servlets的方法、可安全管理的容器、及web应用程序部署描述器web.xml的语法等。</P>
<P>为了使用Tomcat 5开发web应用程序，你首先要安装它。下面各小节简要的说明了必要的安装步骤。</P>
<P>JDK<BR>Tomcat 5.5被设计运行在J2SE 5.0之上，但它也可以运行在JDK1.4之上，只是要求使用兼容包。<BR>对各种平台的兼容JDKs参见<A href="http://java.sun.com/j2se/">http://java.sun.com/j2se/</A>。</P>
<P>Tomcat<BR>二进制Tomcat服务器安装包从<A href="http://java.sun.com/j2se/">http://java.sun.com/j2se/</A> 下载。手册假定你是使用最新的Tomcat 5发布版本。</P>
<P>在手册的以后内容中，例子shell脚本假定你已经设置环境变量CATALINA_HOME，该变量指定Tomcat 5的安装路径和目录。</P>
<P>Ant<BR>Ant build工具的二进制安装包从<A href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</A> 下载。手册假定你使用的是Ant1.4或更高版本。操作说明应该也同样适应于更高版本，但没有经过测试。<BR>从上面提供的网址下载并安装Ant，然后把Ant的bin 目录增加到PATH 环境变量中。这样做了之后，你就可以执行ant shell命令了。</P>
<P>CVS<BR>除了上面说明的工具之外，强烈建议你下载安装source code control（源代码控制、版本管理）工具来维护构建应用程序的源代码文件，如CVS（Concurrent Version System）。除了服务器程序外，你也需要合适的客户端工具，以用于check out源代码文件，和check in修改版本。</P>
<P>在说明如何组织你的源代码目录之前，需要先检查一下web应用程序的运行时组织结构。和Servlet API规范的之前版本相比，规范2.2在服务器平台一致性方面仅有很小的改动。但是，2.2规范要求的遵循该规范的服务器必须接受Web Application Archive作为标准格式，这将在下面进行讨论。</P>
<P>web应用程序的标准规划被定义为层次结构的目录和文件。该层次结构有两种组织形式。一种是"unpacked"方式，这种情况下每个目录和文件分散的保存在文件系统中；另一种是"packed"方式，如Web ARchive或称WAR文件。第一种方式在开发期间比较有用，而后一种方式主要用于应用程序的发布安装。</P>
<P>web应用程序层次结构的顶级目录也即应用程序的document root（根文档），通常在该位置放置包含应用程序用户界面的HTML文件和JSP页面。当系统管理员将应用程序部署到一个特定的服务器上时，他将分配一个context path（上下文路径）给应用程序。因此，如果系统管理员给应用程序分配的上下文路径为 /catalog，则指向 /catalog/index.html 的URI请求将从根文档下获取index.html文件。</P>
<P>标准的目录结构<BR>为了更方便按要求的格式创建Web应用程序档案文件（WAR），在放置"可执行"文件时（这里的可执行文件指Tomcat在执行你的app时实际使用到的所有文件），保持与WAR格式本身要求的组织结构相一致是最好的。因此，你需要在应用程序的"根文档"目录下放置以下内容：<BR>● *.html, *.jsp, etc. : 应用程序中的HTML文件、JSP页面文件及其他必须对客户端浏览器可见的文件（如JavaScript，stylesheet文件，images文件）。对于大型应用程序，你需要考虑把这些文件分别放置在不同的子目录结构中，但对于一个小应用程序，通常简单地把这些文件保存在同一个目录下。<BR>●/WEB-INF/web.xml : Web应用程序的部署描述器（Web Application Deployment Descriptor）。一个XML文件，描述servlets和其他组件，同时包括一些初始化参数、及需要服务器执行的容器管理的安全限制等。这个文件将在后面章节有更详细的描述。<BR>●/WEB-INF/classes/ : 这个目录下保存所有的应用程序需要的、没有被打包到JAR文件中的Java类文件（及相关资源），包括servlet和non-servlet类。如果类被组织成Java的包，则必须在 /WEB-INFO/classes/ 下以目录层次结构的方式保存。例如，一个名为 com.mycompany.mypackage.MyServlet 的类，就应该保存为 /WEB-INFO/classes/com/mycompany/mypackage/MyServlet.class。<BR>●/WEB-INF/lib/ : 这个目录下保存打包了Java类文件（及相关的资源）的JAR文件，如第三方的类库或JDBC驱动程序等。</P>
<P>当在Tomcat（或任何其他2.2/2.3 兼容的服务器）上安装应用程序时，WEB-INFO/classes/ 目录下的类和WEB-INFO/lib/ 目录下JAR文件中打包的所有类，对特定的web应用程序的其他类都是可见的。因此，如果在这些位置的某个地方包含了所有必须的库类（确保已经获得了使用到的任何第三方库重新发布权力的许可），就可以简化web应用程序的安装---无须对系统类路径，或服务器中全局库文件的安装环境，做任何调整。<BR>以上说明的大部分内容摘自Servlet API规范，version 2.3，的第9章，在那里你可以看到更详细的说明。</P>
<P><BR>共享库文件<BR>如大多servlet容器一样，Tomcat 5 也支持这样的机制：库JAR文件（或unpacked 类）一次安装，即可对所有已安装的web应用程序可见（除了要包含他的web应用程序本身之外）。Tomcat如何定位并共享这些类的细节在Class Loader HOW-TO文档中有详细说明。为了实现以上机制，Tomcat 5 安装环境中有两个位置用于共享代码：<BR>●$CATALINA_HOME/common/lib : 放置这里的JAR文件对web应用程序和内部Tomcat代码（internal Tomcat code）都可见。这是放置JDBC驱动程序的好地方，因为JDBC对你的应用程序及内部Tomcat使用（如JDBCRealm）都需要。<BR>●$CATALINA_HOME/shared/lib : 放置这里的JAR文件对所有web应用程序可见，但对内部Tomcat代码不可见。这是放置只用于应用程序的共享库的好地方。</P>
<P>除此之外，标准Tomcat 5安装环境包含了各种预安装的共享库文件，如：<BR>●Servlet 2.4 和JSP 2.0 APIs，这是写servlets和JavaServer 页面的基础；<BR>●兼容JAXP(version 1.2)APIs的XML 解析器（XML Parser），因此你的应用程序可以执行基于DOM或基于SAX的XML文档处理。</P>
<P>Web Application Deployment Descriptor<BR>以下描述中使用$CATALINA_HOME 变量名指Tomcat 5的安装目录，同时也是大部分相对路径解析的基目录。但是，如果你的Tomcat 5配置成多实例模式、并设置了CATALINA_BASE 目录时，你应该使用$CATALINA_BASE 代替$CATALINA_HOME 引用。</P>
<P>如上面提到的，/WEB-INFO/web.xml 文件包含应用程序的部署描述信息。如文件扩展名暗示的，此文件为XML文档，其中定义了服务器需要知道的有关应用程序的所有信息（除了context path，context path是应用程序部署时系统管理员指定的）。<BR>部署描述器的完整语法和语义定义在Servlet API规范（version 2.3）的第13章。随着时间的推移，你的最终期望是应该提供部署工具来进行部署描述器的创建和编辑。期间，为了提供一个起点，一个基础web.xml文件（basic web.xml file）首先被提供。这个文件包含了每个元素用途的描述。</P>
<P>NOTE：Servlet规范为web应用程序部署描述器包含了DTD（Document Type Descriptor），Tomcat 5在处理web应用程序的 /WEB-INFO/web.xml 文件时遵循了这个规则。特别地，你必须按DTD定义的顺序输入描述符元素（如<FILTER>, <SERVLET>, 及<SERVLET-MAPPING>）。</P>
<P>Tomcat Context Descriptor<BR>/META-INF/context.xml 文件用于定义Tomcat的特殊配置选项，如loggers，data sources，session manager configuration，等。此XML文件必须包含一个Context元素，Context元素看起来像是Host元素的子元素，和Host一样，Tomcat配置文档在Context元素下包含了Context的配置信息。</P>
<P>Deployment with Tomcat 5<BR>为了执行，一个web应用程序必须首先被部署到一个servlet容器中。在开发期间这是必须的。这里将描述使用Tomcat 5提供一个执行环境。web应用程序可以用下面几种方法之一部署到Tomcat上：<BR>●Copy unpacked directory hierarchy into subdirectory in directory $CATALINA_HOME/webapps/<BR>拷贝unpacked目录层次结构到$CATALINA_HOME/webapps/ 目录下的子目录中<BR>Tomcat 将基于你选择的子目录名分配一个context path给你的web应用程序。我们将在我们构造的build.xml文件使用这个技术，因为这是开发期间最快和最容易的方法。要确保在安装或更新应用程序后重启Tomcat。</P>
<P>●Copy the web application archive file into directory $CATALINA_HOME/webapps/<BR>拷贝web应用程序档案文件到目录$CATALINA_HOME/webapps/ 下<BR>当Tomcat启动时，它将自动展开web应用程序档案文件到其unpacked的格式，并以那种方式执行应用程序。这个方法是用于安装附加应用程序到Tomcat安装环境的典型方法，如由第三方厂家或内部开发机构提供的应用程序。<BR>NOTE : 如果使用这个方法，并希望稍后更新应用程序，必须替换web应用程序档案文件并同时删除Tomcat创建的展开目录，然后重启tomcat以反应你的更新。</P>
<P>●Use the Tomcat 5 "Manager" web application to deploy and undeploy web applications<BR>使用Tomcat 5 "Manager" web应用程序部署和去部署web应用程序<BR>Tomcat 5包含了一个web应用程序，用于在不要重启Tomcat服务器的情况下、在运行的Tomcat服务器上完成部署和去部署web应用程序的工作。该web应用程序缺省部署在context path /manager 下。</P>
<P>●Use "Manager" Ant Tasks In Your Build Script<BR>在Build脚本中用 "Manager" Ant 任务<BR>Tomcat 5包含了一组对Ant build工具的客户化任务定义，这些任务定义允许你自动执行web应用程序管理的操作。这些任务也被用在Tomcat 的部署器中。</P>
<P>●Use the Tomcat Deployer<BR>使用Tomcat 5部署器<BR>Tomcat 5包含了一个绑定Ant任务的打包工具，这个工具可以用于在JSPs部署到服务器之前的自动预编译。</P>
<P>部署应用程序到其他servlet容器需要遵循其他容器的规范，但所有兼容Servlet API规范的容器都必须能够接收一个web应用程序档案文件（WAR）。注意，其他容器没有被要求一定接收unpacked目录结构（如Tomcat支持的一样），或提供共享库文件的支持，而这些特性通常都是很有用的。</P>
<P><BR>&nbsp;</P><img src ="http://www.blogjava.net/vaga/aggbug/19001.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vaga/" target="_blank">vaga</a> 2005-11-09 16:10 <a href="http://www.blogjava.net/vaga/articles/19001.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>