`
pengtyao
  • 浏览: 401314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

配置Tomcat的<Context>元素

阅读更多
摘自:孙卫琴  电子工业出版社  《Tomcat与Java Web开发技术详解(第2版)》第3章第一个JavaWeb应用

3.3.4  配置Tomcat的<Context>元素

本章3.3.2节已经介绍了在Tomcat中发布JavaWeb应用的最快捷的方式,即只需把JavaWeb应用的所有文件复制到<CATALINA_HOME>/webapps目录下即可,Tomcat会按照默认的方式来发布和运行JavaWeb应用。如果需要更加灵活地发布Web应用,则需要为Web应用配置Tomcat的<Context>元素。

<Context>元素是 Tomcat 中使用最频繁的元素,它代表了运行在虚拟主机<Host>上的单个Web应用。本书第2章的2.3节(Tomcat的组成结构)在介绍Tomcat的组成结构时已经简单介绍了<Context>元素、<Host>元素和<Engine>元素。在一个<Engine>中可以有多个<Host>,在一个<Host>中可以有多个<Context>。<Context>元素的主要属性的说明参见表3-4。

表3-4  Context元素的主要属性


(续表)

在一般情况下,<Context>元素都会使用默认的标准 Context 组件,即 className属性采用默认值org.apache.catalina.core.StandardContext。标准Context组件除了具有表3-4列出的属性,还具有表3-5所示的属性。

表3-5  标准Context组件的专有属性


在 Tomcat 4.x 版本中,直接在<CATALINA_HOME>/conf/server.xm文件中配置<Context>元素。这种配置方式有一个弊端:如果在Tomcat运行时修改server.xml文件,比如添加<Context>元素,那么所做的修改不会立即生效,而必须重新启动Tomcat,才能使所做的修改生效。

因此Tomcat 6.x尽管也允许直接在server.xml文件中配置<Context>元素,但不提倡采用这种方式。Tomcat 6.x提供了多种配置<Context>元素的途径。当Tomcat 6.x加载一个 Web 应用时,会依次按照以下五种方式尝试查找 Web 应用的<Context>元素,直到找到为止

(1)到<CATALINA_HOME>/conf/context.xm文件中查找<Context>元素。这个文件中的<Context>元素的信息适用于所有Web应用。

(2)到<CATALINA_HOME>/conf/[enginename]/[hostname]/context.xml.default 文件中查找<Context>元素。[enginename]表示<Engine>的 name 属性,[hostname]表示<Host>的name属性。在context.xml.default文件中的<Context>元素的信息适用于当前虚拟主机中的所有Web应用,例如以下文件中的<Context>元素适用于名为Catalina的Engine下的localhost主机中的所有Web应用:

<CATALINA_HOME>/conf/Catalina/localhost/context.xml.default

(3)到<CATALINA_HOME>/conf/[enginename]/[hostname]/[contextpath].xml文件中查找<Context>元素。[contextpath]表示单个Web应用的URL入口。在[contextpath].xml文件中的<Context>元素的信息只适用于单个 Web 应用,例如以下文件中的<Context>元素适用于名为“Catalina”的Engine下的localhost主机中的helloapp应用:
<CATALINA_HOME>/conf/Catalina/localhost/helloapp.xml

(4)到Web应用的META-INF/context.xml文件中查找<Context>元素。这个文件中的<Context>元素的信息适用于当前Web应用。

(5)到<CATALINA_HOME>/conf/server.xm文件中的<Host>元素中查找<Context>子元素。该<Context>元素的信息只适用于单个Web应用。

如果仅仅为单个 Web 应用配置<Context>元素,可以优先选择第三种或第四种方式。第三种方式要求在Tomcat的相关目录下增加一个包含<Context>元素的配置文件,而第四种方式则要求在 Web 应用的相关目录下增加一个包含<Context>元素的配置文件。对于这两种方式,Tomcat在运行时都会监测包含<Context>元素的配置文件是否被更新,如果被更新,Tomcat 会自动重新加载并启动 Web 应用,使对<Context>元素所做的修改生效。

下面先采用第四种方式配置<Context>元素。在 helloapp 目录下新建一个META-INF子目录,然后在其中创建一个context.xml文件,它的内容如下:

<Context path="/helloapp" docBase="helloapp" reloadable="true"/>
以上<Context>元素的 docBase 属性表明,helloapp 应用的文件路径为<CATALINA_HOME>/webapps/helloapp;path属性表明访问helloapp应用的URL入口为“/helloapp”。

下面再采用第三种方式配置<Context>元素。假定 helloapp 应用的文件路径为C:\chapter03\helloapp,并且在<CATALINA_HOME>/webapps 目录下没有发布helloapp应用。在<CATALINA_HOME>/conf目录下先创建Catalina目录,接着在Catalina目录下再创建localhost目录,然后在<CATALINA_HOME>/conf/Catalina/localhost目录下创建helloapp.xml文件,它的内容如下:

<Context path="/helloapp" docBase="C:\
chapter03\helloapp" reloadable="true"/>

以上<Context>元素的 docBase 属性指定了 helloapp 应用的绝对路径,为C:\chapter03\helloapp;path属性表明访问helloapp应用的URL入口为“/helloapp”。由于helloapp.xml文件位于Catalina/localhost/子目录下,因此helloapp应用将运行在名为Catalina 的 Engine 组件的 localhost 虚拟主机中。访问 helloapp应用中的 login.htm和hello.jsp的URL分别为:
http://localhost:8080/helloapp/login.htm
http://localhost:8080/helloapp/hello.jsp

在 server.xm文件中已经有一个名为 localhost 的<Host>元素,如果采用第五种方式配置<Context>元素,最常见的做法是在该<Host>元素中插入<Context>子元素,例如:
<Host name="localhost"              appBase="webapps"
unpackWARs="true"        autoDeploy="true"
xmlValidation="false"   xmlNamespaceAware="false">
…
  <Context path="/helloapp" docBase="helloapp" reloadable="true"/>
</Host>

Tips

如果没有为Web应用配置Tomcat的Context元素,那么Tomcat会为Web应用提供一个默认的Context组件。例如在按照本章3.3.2节的方式发布helloapp应用时,Tomcat就给它提供了默认的Context组件。
分享到:
评论
1 楼 362980633 2014-09-30  
我在项目中写context.xml,项目没有不部署在tomcat下。可以使项目中配置contex的生效吗

相关推荐

    spring配置中<context-param> 和<init-param>的 区别

    在Spring框架的XML配置中,`&lt;context-param&gt;`和`&lt;init-param&gt;`是两种不同的参数配置元素,它们各自有着特定的用途。理解这两者的区别对于深入掌握Spring的应用上下文(ApplicationContext)初始化至关重要。 首先,...

    tomcat server.xml元素详细说明

    `&lt;Host&gt;`元素用于配置虚拟主机,每个`&lt;Host&gt;`元素代表一个虚拟主机,可以有多个`&lt;Context&gt;`元素嵌套其中,代表不同的Web应用。 - **name**:虚拟主机的域名或IP地址。 - **appBase**:Web应用程序的基本目录。 - **...

    Tomcat 配置详解

    本文将详细解析Tomcat的核心配置元素,包括`&lt;Server&gt;`、`&lt;Service&gt;`、`&lt;Engine&gt;`、`&lt;Host&gt;`和`&lt;Context&gt;`,帮助读者更好地理解和优化Tomcat的运行环境。 首先,`&lt;Server&gt;`元素是Tomcat实例的顶级容器,由`org....

    Tomcat的配置文件server.xml中各个域的说明及相关配置.pdf

    总结来说,`server.xml`文件是Tomcat服务器的配置中心,通过理解并熟练配置其中的`&lt;Server&gt;`、`&lt;Service&gt;`、`&lt;Engine&gt;`、`&lt;Host&gt;`和`&lt;Context&gt;`元素,可以灵活地定制Tomcat的行为,以满足不同Web应用的需求。...

    Tomcat中配置和使用JNDI.doc

    - 在`&lt;Context&gt;`元素内部,添加`&lt;Resource&gt;`元素来定义数据源: ```xml &lt;Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"&gt; &lt;ResourceParams name="jdbc/TestDB"&gt; &lt;parameter&gt; ...

    一个tomcat配置多个端口运行不同项目

    要配置Tomcat运行多个项目,你需要创建额外的`&lt;Service&gt;`,`&lt;Engine&gt;`,`&lt;Host&gt;`和`&lt;Context&gt;`元素。例如,如果你已经有默认的`&lt;Service&gt;`名为`Catalina`,你可以创建一个新的`&lt;Service&gt;`,如`SecondService`,并为...

    tomcat配置详解

    `&lt;Server&gt;`元素作为Tomcat实例的顶级配置节点,负责定义整个Tomcat容器的基本结构和功能。此元素由`org.apache.catalina.Server`接口定义,并且在配置文件中只能出现一次。 - **属性详解**: - **`className`**: ...

    tomcat_server.xml_配置详解.doc

    `&lt;Server&gt;`元素是Tomcat实例的最高层级元素,代表整个容器。它由`org.apache.catalina.Server`接口定义,并且仅能包含一个`&lt;Service&gt;`元素。此元素本身不能作为其他元素的子元素。通过以下关键属性进行配置: - **...

    Tomcat的server.xml文件

    6. `&lt;Context&gt;`元素:`&lt;Context&gt;`用于配置特定的Web应用程序,其`docBase`属性指定Web应用的根目录,`path`属性是URL路径,`reloadable`属性决定是否在修改部署文件后自动重新加载应用。 7. 其他配置:除了以上主要...

    tomcat_server.xml_配置详解

    `&lt;Server&gt;`元素是整个Tomcat实例的顶级容器,它由`org.apache.catalina.Server`接口定义。此元素有两个主要属性: - `port`: 指定Tomcat用于接收关闭命令的端口,默认为8005。 - `shutdown`: 指定发送给该端口的...

    tomcat中server.xml详解

    除了上述主要元素,`server.xml`还包含其他一些配置,如`&lt;Listener&gt;`(监听器)用于注册事件处理器,`&lt;GlobalNamingResources&gt;`用于定义全局JNDI资源,以及`&lt;Valve&gt;`(阀门)元素,它可以插入自定义的请求处理逻辑。...

    Tomcat中文帮助文档(适合初学者)

    - **&lt;Context&gt;**:最常用的元素,每个`&lt;Context&gt;`代表一个独立的Web应用程序,一个`&lt;Host&gt;`可以包含多个`&lt;Context&gt;`。 ### Tomcat组件之间的关系 Tomcat的组件通过嵌套的方式组织,形成了层次化的结构,如下所示: ...

    C3P0 在tomcat中如何配置

    需要在`&lt;Context&gt;`元素中添加`&lt;Resource&gt;`元素来定义C3P0数据源。示例配置如下: ```xml &lt;Context path="/eba" docBase="D:\work\eba\eba" debug="0" privileged="true" reloadable="true"&gt; &lt;Resource name=...

    Tomcat服务器详细整理资料.pptx

    该文件的基本结构包括了`&lt;Server&gt;`、`&lt;Service&gt;`、`&lt;Connector&gt;`、`&lt;Engine&gt;`、`&lt;Host&gt;`和`&lt;Context&gt;`等元素。 - `&lt;Server&gt;`:是整个Servlet容器的顶层元素,可以包含一个或多个`&lt;Service&gt;`元素。 - `&lt;Service&gt;`:...

    一个详细介绍tomcat6.0的内部结构的文档

    - `&lt;Host&gt;` 元素代表一个虚拟主机,可以配置多个 `&lt;Context&gt;` 来部署不同的 Web 应用程序。 - 每个 `&lt;Host&gt;` 元素可以对应一个特定的域名或 IP 地址。 6. **Context 组件** - `&lt;Context&gt;` 元素是 `&lt;Host&gt;` 的子...

    Tomcat 服务器server.xml的关键参数配置

    &lt;Context path="/xkb" docBase="F:\XKB6\webApp" debug="5" reloadable="true" crossContext="true"&gt; &lt;Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_DBTest_log." suffix=".txt" ...

    tomcat概述和体系架构

    在结构上,Tomcat的顶层类元素包括`&lt;Server&gt;`和`&lt;Service&gt;`,连接器类元素负责通信接口,而容器类元素则分为`Engine`、`Host`和`Context`,它们分别负责处理请求、特定虚拟主机请求和特定Web应用请求。所有的Tomcat...

    tomcat结构分析

    - `&lt;Host&gt;`:代表一个虚拟主机,每个`&lt;Host&gt;`可以配置不同的域名,并且可以包含多个`&lt;Context&gt;`。这样,同一台服务器可以托管多个网站。 - `&lt;Context&gt;`:是最底层的容器,对应一个Java Web应用。它负责处理特定的...

    tomcat_maven远程部署配置文档

    其中,`&lt;Valve&gt;`元素用于指定允许访问Manager应用的IP地址范围。默认情况下,使用正则表达式`^.*$`表示允许所有IP地址访问。可以根据实际需求修改为具体的IP地址或地址段。 #### 四、配置Maven的`settings.xml` ...

Global site tag (gtag.js) - Google Analytics