应用开发者指南_deployment

应用开发者指南

部署

目录

·   背景

·   标准目录形式

·   共享的库文件

·   Web应用部署描述文件

·   Tomcat Context 描述文件

·   使用Tomcat6部署应用

 

背景

在描述如何组织源代码目录之前,检查下web应用的运行时组织会比较有用。在Servlet API规范2.2版本之前,服务器平台几乎很少是一致的。尽管如此,遵守规范2.2或以后版本的服务器都需要以标准的的形式使用web应用包,下面将会讲到。

一个web应用以标准的分层的目录和文件来定义。这种分层结构可以以解包后的形式访问,每个目录和文件在文件系统中独立的存放,或者用一种打包的形式,即war包的形式。解压的格式在开发过程中更有用,而war包是发布的形式以便安装。

Web应用的顶层目录也是应用程序的文档根目录。在这里,你可以放置Html文件和jsp页面,这些构成了你的应用程序的用户界面。当系统管理员把你的应用部署到一个特定的服务器,他或她给你的应用分配了一个context 路径(本手册后面的章节描述如何在tomcat中部署应用)。因此, 如果系统管理员给你的应用程序分配的context路径为/catalog,那么请求的URI /catalog/indext.html会从文档的根目录获取index.html文件。

 

标准目录形式

为了方便以特定的格式打成WAR包, 把“可执行”的文件列表组织成WAR包格式需要的形式会比较方便(也就是说,tomcat执行时如何使用这些文件)。为了实现这个目的,您需要按照下面的方式来放置文档根目录的内容:

·   *.html, *.jsp, 之类. - HTML 和 JSP 页面文件, 以及和它们一起的其它文件(例如Javascript脚本文件,stylesheet文件,以及图片文件),在您的应用中必须对客户端浏览器可见。在大型应用中,您可能选择把这些文件组织成有层级的子目录结构,但对小型应用来说,通常为这些文件维护单一的目录会更加简单。

·   /WEB-INF/web.xml – Web应用部署描述符文件。这个XML文件描述了servlet和构成您的应用的其它组件,同时也描述了初始化参数和您想让服务器进行容器管理安全限制方面的内容。该文件在下面的章节中有更详细的描述。

·   /WEB-INF/classes/ - 该目录包含应用所需要的Java class文件,包括servlet和非servlet class文件,它们没有被合并成jar文件。如果你的class文件是在package中提供的,你必须在/WEB-INF/classes/目录下反映这种package目录层次结构。例如:一个叫做com.mycompany.mypackage.MyServlet的Java class文件必须存储在/WEB-INF/classes/com/mycompany/mypackage/MyServlet.class 。

·   /WEB-INF/lib/ - 该目录包含了应用所需要的jar包,例如第三方的类库或JDBC驱动。

当您把应用安装到Tomcat中(或任何其它的2.2/2.3兼容的服务器),把class文件放在WEB-INF/classes/目录,同时把所有jar包中的class文件以jar包的形式放在WEB-INF/lib目录,这样在你的web应用中就可以使上面的这些class文件对其它的class文件可见。因此,如果您把所有需要的类库class文件(请确保检查你使用的第三方类库重新发布的license)放在这些位置之一,这将会简化web应用的安装—无需根据系统classpath(或者安装全局的库文件)做调整。

许多信息是从Servlet API Specification, version 2.3第9章提取出来的,您可以从中获取更详细的信息。

 

共享的库文件

和大多数的servlet容器相似, Tomcat 6 也支持安装Jar包库文件(或解包的class文件)一次,所有安装的web应用都可见(无需在每个web应用中包含)。 Tomcat如何放置和共享这些class,详细的描述在文档Class Loader HOW-TO 文档中。 通常Tomcat6放置共享代码的位置是$CATALINA_HOME/lib. 把JAR文件放在这里对web应用和Tomcat内部代码都是可见的。这个地方对于您的应用和Tomcat内部使用(例如用于JDBCRealm)都是放置jdbc驱动的好地方。

标准Tomcat 6安装后预装了一些共享库,它们是可以直接使用的,包括:

·   Servlet 2.5 and JSP 2.1 APIs的共享库,这些对于写servlet和JSP是必须的。

 

Web应用部署描述文件

如上所述, /WEB-INF/web.xml 包含了Web应用部署的描述。正如文件名的后缀所暗示,该文件是一个XML文档,它定义了server需要知道的关于您的应用的一切(除了context路径,这是系统管理员在部署应用时分配的)。

完整的部署描述文件的语法语义在Servlet API Specification, version 2.3的第13章定义。随着时间推移,将提供创建和编辑部署描述文件的开发工具。同时提供basic web.xml file作为切入点,该文件中每个元素的目的都有注释。

注意 – Servlet规范包含了web应用部署描述符文件的文档类型描述(DTD),并且Tomcat 6处理应用中的/WEB-INF/web.xml强制执行了该处定义的规则。特别的,您必须按照DTD中定义的顺序输入描述元素(例如<filter>, <servlet> 以及 <servlet-mapping> ,参考章节13.3)。

 

Tomcat Context 描述文件

一个/META-INF/context.xml文件可用于定义Tomcat特定的配置选项,例如访问日志,数据源,session管理员配置以及其它更多的配置。这个XML文件必须包含一个Context元素,该元素将作为Host元素的子元素。Host元素就是web应用部署的主机对应的元素。Tomcat configuration documentation 包含了Context元素的信息。

 

使用Tomcat6部署应用

下面的描述使用变量$CATALINA_BASE 来指代基本路径,它是针对要解析的相对路径时使用的。如果你没有通过设置CATALINA_BASE目录来配置Tomcat6多实例,$CATALINA_BASE将被设置成$CATALINA_HOME,这是TOMCAT6安装所在的位置。

为了使用web应用能够被执行,web应用必须部署在Servlet容器上。这在开发阶段也是这样的。我们将描述使用Tomcat6来提供执行环境。一个Web应用可以使用下面的方法之一来部署:

·   拷贝未解压的目录结构到$CATALINA_BASE/webapps/下的一个子目录。Tomcat将分配一个context路径给你的应用,context路径是基于你选择的子目录名。我们将在我们写的build.xml使用这个技术,因为这是开发阶段最快速也是最简单的方法。在安装或更新您的应用后请务必重启Tomcat。

·   把web应用的打包文件WAR拷贝到$CATALINA_BASE/webapps/目录。当Tomcat启动时,它会自动解压WAR包,解包成未打包的格式,然后以未打包的格式执行应用。该方法通常用于安装一个额外的应用到Tomcat中,该额外的应用可能是第三方提供的或是内部员工提供的。 注意 – 如果您使用该方法,并且期望后续能更新应用,您必须替换web应用的WAR包,同时删除Tomcat创建的解压后的目录,然后重启Tomcat,使您的修改生效。

·   使用Tomcat6 中一个叫做“Manager”的web应用来部署和反部署web应用。Tomcat 6 包含了一个缺省的web应用, 以context路径/manager部署,它允许在不重启Tomcat的的情况下部署和反部署web应用。参考管理员文档 (TODO: 超链接) 来获取更多关于“Manager” web应用的信息。

·   在您的编译脚本中使用 "Manager" 这个Ant 任务。Tomcat 6 包含了一系列定制的任务定义,从而使您可以使用Ant编译工具自动向“Manager”web应用执行命令。这些任务在Tomcat Deployer中使用。

·   使用 Tomcat Deployer. Tomcat 6 包含了一个包装的的工具来构建Ant的任务,并且可以用于在部署到服务器之前自动预编译JSP。

把你的应用部署到servlet容器,在每个servlet容器都是不同的,但所有的遵守Servlet API Specification (version 2.2 or later)的容器都必须接受WAR文件。注意其它容器不一定需要能处理解压后的目录结构(就像Tomcat所实现的),也不一定提供共享库文件的机制,但这些特性一般都是可用的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值