• Tomcat配置任意目录下的Web应用程序


        每一个Web应用程序都有一个起始目录,在开发和部署Web应用程序时,通过上下文路径(Context path)来区分不同的Web应用程序。Tomcat默认的Web应用程序的起始目录(也称为上下文根)是%CATALINA_HOME%/webapps/ROOT,例如一个关于Hello World的Web应用程序的起始目录是%CATALINA_HOME%/webapps/ch08,这就意味着/ch08是关于Hello World的Web应用程序的上下文路径。那么如何配置任意目录下的Web应用程序呢?

        我们知道,在Web服务器中可以配置虚拟目录,而虚拟目录所对应的真实目录可以在任意路径下。同样地,在Tomcat中,也有类似的配置,这主要通过在XML配置文件中设置<Context>元素来完成。一个<Context>元素就表示一个Web应用程序,运行在特定的虚拟主机中。

        这里介绍一种在Tomcat中最常用的配置方法:可以为一个Web应用程序建立%CATALINA_HOME%/conf/[enginename]/[hostname]/XXX.xml文件。这里[enginename]表示的是在servlet.xml文件中设置的<Engine>元素的name属性值,具体到Tomcat,这个属性值就是Catalina;[hostname]表示的是在servlet.xml文件中设置的<Host>元素的name属性值,具体到Tomcat,这个属性值就是localhost。在这个XML文件中,<Context>元素的docBase属性通常是Web应用程序目录的绝对路径名,或者是Web应用程序归档文件的绝对路径名。

       

    u      下面简要描述一下在配置Web应用程序时<Context>元素中常用的几个属性含义。

    path:指定Web应用程序的上下文路径。在一个特定的虚拟主机中,所有的上下文路径都必须是唯一的。如果指定一个上下文路径为空字符串(””),则定义了这个虚拟主机的默认Web应用程序,负责处理所有的没有分配给其他Web应用程序的请求。

    docBase:指定Web应用程序的文档根目录或者WAR文件的路径名。可以指定目录的或WAR文件的绝对路径名,也可以指定相对于Host元素的appBase目录的路径名。该属性是必须的。

    reloadable:如果设置为true,Tomcat服务器在运行时,会监视WEB-INF/classes和WEB-INF/lib目录下类的改变,如果发现有类被更新,Tomcat服务器将自动重新加载该Web应用程序。这个特性在应用程序开发阶段非常有用,但是它需要额外的运行时开销,所以在产品发布时不建议使用。该属性的默认值是false。

    在%CATALINA_HOME%/webapps目录下的Web应用程序,如果没有在任何文件中设置<Context>元素,那么Tomcat将为这个Web应用程序自动生成<Context>元素。自动生成的<Context>元素的上下文路径将以斜杠(/)开始,后面紧跟Web应用程序所在目录的名字,如果目录的名字是ROOT,那么上下文路径将是一个空字符串(””)。所以在%CATALINA_HOME%/webapps目录下的Web应用程序可以不经配置而直接使用。

    u      下面举个例子来说明:

    在计算机中关于Hello World的Web程序被放置在目录D:/workspace/ch8下面,为了可以直接在这个目录下运行Web应用程序,可以在%CATALINA_HOME%/conf/[enginename]/[hostname]/目录下,为Hello World这个Web应用程序建立一个XML文件,例如在笔者的机器上可以在D:/apache-tomcat-5.5.31/conf/Catalina/localhost/目录下新建ch08.xml文件,编辑这个文件,输入如下所示内容。

    文件名:ch08.xml

    <Context path=”/test” docBase=” D:/workspace/ch08” reloadable=”true”/>

    这里有三个地方需要进一步说明一下,这三个地方分别是:

    u       文件名:ch08.xml

    u       path=/test

    u       docBase=” D:/workspace/ch08”

    这三个地方在有些书上被写成如下三种值ch08.xml、/ch08、” D:/workspace/ch08”,容易让人以为这三个值之间似乎存在某种联系从而造成误会,其实它们之间是没有联系的。现分别说明如下:

    u       文件名:ch08.xml中的“ch08”将会影响将来用浏览器访问Web应用程序时地址栏中紧跟在http://localhost:8080后面的内容,如图1所示。

    u       path=/ch08中的“ch08”是Context上下文路径,在整个Web应用程序中,一个Servlet对应一个唯一的上下文路径,而这个名称只要唯一就行,至于是什么名称,没有限定。

    u       docBase=” D:/workspace/ch08”中的“ch08”是Web应用程序在计算机中存放的目录文件夹,由于是可以存放在任意目录下,所以这里可以是任意名称。

        通过以上分析可以看出,这三个地方虽然有时候会出现同样的内容,但是它们之间是没有什么必然联系的,详细图解见图1。

  • 相关阅读:
    浅谈《倒退的历史——某MIS项目手记(1):“切五花肉”式的分工 》
    使用SMO备份SQLServer2005数据库
    在.NET 2.0中,让你的组件也可以绑定
    URL 正则表达式,全【转】
    WinForm 自定义控件属性
    C# WebBrowser 中删除 HtmlElement
    C# C# WinForm控件美化扩展系列之ImageComboBox
    C# 处理无边框窗体
    【唠叨两句】Event and delegate
    与 “关闭窗体” 相关的一些零散知识
  • 原文地址:https://www.cnblogs.com/xiaodoujiaohome/p/4664333.html
Copyright © 2020-2023  润新知