本章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应用:

  1. <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应用:

  1. <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文件,它的内容如下:

  1. <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文件,它的内容如下:

  1. <Context path="/helloapp" docBase="C:\
  2. 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分别为:

  1. http://localhost:8080/helloapp/login.htm
  2. http://localhost:8080/helloapp/hello.jsp

在 server.xm文件中已经有一个名为 localhost 的<Host>元素,如果采用第五种方式配置<Context>元素,最常见的做法是在该<Host>元素中插入<Context>子元素,例如:

  1. <Host name="localhost"              appBase="webapps"
  2. unpackWARs="true"        autoDeploy="true"
  3. xmlValidation="false"   xmlNamespaceAware="false">
  4. <Context path="/helloapp" docBase="helloapp" reloadable="true"/>
  5. </Host>

Tips

如果没有为Web应用配置Tomcat的Context元素,那么Tomcat会为Web应用提供一个默认的Context组件。例如在按照本章3.3.2节的方式发布helloapp应用时,Tomcat就给它提供了默认的Context组件。

http://pengtyao.iteye.com/blog/1028968

3.3.4 配置Tomcat的<Context>元素 (转)的更多相关文章

  1. J2EE环境搭建(三)配置Tomcat 7.0的局部数据源

    在J2EE环境搭建(一)中遗留下一个配置Tomcat数据源的问题,最近都在专心搞iOS的东西,由于J2EE布置了作业,所以又回过头来搞下J2EE.汗... 在这里我使用的是MySQL. 1.配置MyS ...

  2. 配置Tomcat中的Context元素中的中文问题

    发布一个名叫helloapp的web应用,helloapp位于D:\我\helloapp.发布的方式是通过配置<CATALINA_HOME>/conf/Catalina/localhost ...

  3. Java进阶(十)java tomcat中context配置

    Tomcat中Context的配置 问题: java tomcat中<context> docBase属性是什么意思? 元素的属性: path:指定访问该Web应用的URL入口.  doc ...

  4. 在tomcat下context.xml中配置各种数据库连接池(JNDI)

    1.   首先,需要为数据源配置一个JNDI资源.我们的数据源JNDI资源应该定义在context元素中.在tomcat6版本中,context元素已经从server.xml文件中独立出来了,放在一个 ...

  5. 《TomCat与Java Web开发技术详解》(第二版) 第三章节的学习总结--利用Context元素来自定义web应用的存储位置

    在学习完第三章后(第三章提供的web应用是helloaapp,我将其放到了tomcat/webapps中),对Context元素的作用理解不深:但是当进入第四章后,发现第四章提供的源码包中也有一个叫h ...

  6. 在tomcat下context.xml中配置各种数据库连接池

    作者:郑文亮 Tomcat6的服务器配置文件放在 ${tomcat6}/conf 目录底下.我们可以在这里找到 server.xml 和 context.xml.当然,还有其他一些资源文件.但是在在本 ...

  7. Tomcat中Context的配置

    Tomcat直接ip地址访问不用加端口和项目名 当我们开发完一个WEB项目 然后部署到tomcat下,正常情况下应该是这样访问:http://localhost:端口号/项目名 如果我们想让用户仅仅输 ...

  8. [原创]同一个Tomcat,配置多个context、多个Host

    需求前提: 系统结束后,需要部署到服务器上. 目前只可以映射到一个固定IP的非80端口. 而server端和web端都要暴露到外网. 所以配置两个context,使得client应用不需要添加服务名, ...

  9. context元素大概解说

    Context元素代表一个web应用,运行在某个特定的虚拟主机上.如Servlet Specification 2.2或以后版本中描述的那样,每个web应用基于一个Web Application Ar ...

随机推荐

  1. 二分查找(binary search)java实现及时间复杂度

    概述 在一个已排序的数组seq中,使用二分查找v,假如这个数组的范围是[low...high],我们要的v就在这个范围里.查找的方法是拿low到high的正中间的值,我们假设是m,来跟v相比,如果m& ...

  2. Ubuntu上安装和使用RabbitMQ

    1. 安装RabbitMQ服务软件包 输入以下命令进行安装 #apt install rabbitmq-server 2.安装完成后在rabbitMQ中添加用户 命令:#rabbitmqctl add ...

  3. Redis相关命令

    一.命令示例 1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX: #在Shell命令行下启动Redis客户端工具. /> redis-cli #清空当前选择的数据库 ...

  4. 【Python】 用户图形界面GUI wxpython I 基本用法和组件

    wxpython - 基本用法和组件 wxpython是python对跨平台GUI库wxWidgets的封装.wxWidgets是由C++写成的. wxpython被包装进了wx模块中,用它设计GUI ...

  5. linux小白成长之路6————安装Java+Apache(httpd)+Tomcat

    [内容指引] 安装Java环境: 查看JDK版本: 安装Apache(httpd); 安装Tomcat: 设置服务开机启动. 1.安装Java环境 指令: yum intall java-1.8.0* ...

  6. 走进webpack(3)-- 小结

    写这一系列的文章,本意是想要梳理一下自己凌乱的webpack知识,只是使用过vue-cli,修改过其中的一部分代码,但是对于一个简单项目从0开始搭建webpack的流程和其中的依赖并不是十分清楚.所以 ...

  7. spring框架学习笔记5:SpringAOP示例

    1.导包: 导入spring中的这两个包 再导入其他包(网上下载): 2.准备目标对象: package service; public class UserServiceImpl implement ...

  8. 忘记oracle的sys密码该如何重置;附如何修改oracle数据库用户密码

    参考博客:http://blog.itpub.net/26015009/viewspace-717505/ 这里只说一种方法:使用ORAPWD.EXE 工具修改密码 打开命令提示符窗口,输入如下命令: ...

  9. JUnit单元测试遇到的问题及解决思路

    JUnit是Java单元测试框架,我们在对开发的系统进行单元测试的时候,也遇到了如何测试多个测试用例的问题.  背景:我们的所有测试用例都保存在Excel文件中,该文件包含测试用例和预期输出.我们希望 ...

  10. 开始使用HTML5和CSS3验证表单

    使用HTML5和CSS3验证表单 客户端验证是网页客户端程序最常用的功能之一,我们之前使用了各种各样的js库来进行表单的验证.HTML5其实早已为我们提供了表单验证的功能.至于为啥没有流行起来估计是兼 ...