摘自:孙卫琴 电子工业出版社 《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组件。
分享到:
相关推荐
在Spring框架的XML配置中,`<context-param>`和`<init-param>`是两种不同的参数配置元素,它们各自有着特定的用途。理解这两者的区别对于深入掌握Spring的应用上下文(ApplicationContext)初始化至关重要。 首先,...
`<Host>`元素用于配置虚拟主机,每个`<Host>`元素代表一个虚拟主机,可以有多个`<Context>`元素嵌套其中,代表不同的Web应用。 - **name**:虚拟主机的域名或IP地址。 - **appBase**:Web应用程序的基本目录。 - **...
本文将详细解析Tomcat的核心配置元素,包括`<Server>`、`<Service>`、`<Engine>`、`<Host>`和`<Context>`,帮助读者更好地理解和优化Tomcat的运行环境。 首先,`<Server>`元素是Tomcat实例的顶级容器,由`org....
总结来说,`server.xml`文件是Tomcat服务器的配置中心,通过理解并熟练配置其中的`<Server>`、`<Service>`、`<Engine>`、`<Host>`和`<Context>`元素,可以灵活地定制Tomcat的行为,以满足不同Web应用的需求。...
- 在`<Context>`元素内部,添加`<Resource>`元素来定义数据源: ```xml <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"> <ResourceParams name="jdbc/TestDB"> <parameter> ...
要配置Tomcat运行多个项目,你需要创建额外的`<Service>`,`<Engine>`,`<Host>`和`<Context>`元素。例如,如果你已经有默认的`<Service>`名为`Catalina`,你可以创建一个新的`<Service>`,如`SecondService`,并为...
`<Server>`元素作为Tomcat实例的顶级配置节点,负责定义整个Tomcat容器的基本结构和功能。此元素由`org.apache.catalina.Server`接口定义,并且在配置文件中只能出现一次。 - **属性详解**: - **`className`**: ...
`<Server>`元素是Tomcat实例的最高层级元素,代表整个容器。它由`org.apache.catalina.Server`接口定义,并且仅能包含一个`<Service>`元素。此元素本身不能作为其他元素的子元素。通过以下关键属性进行配置: - **...
6. `<Context>`元素:`<Context>`用于配置特定的Web应用程序,其`docBase`属性指定Web应用的根目录,`path`属性是URL路径,`reloadable`属性决定是否在修改部署文件后自动重新加载应用。 7. 其他配置:除了以上主要...
`<Server>`元素是整个Tomcat实例的顶级容器,它由`org.apache.catalina.Server`接口定义。此元素有两个主要属性: - `port`: 指定Tomcat用于接收关闭命令的端口,默认为8005。 - `shutdown`: 指定发送给该端口的...
除了上述主要元素,`server.xml`还包含其他一些配置,如`<Listener>`(监听器)用于注册事件处理器,`<GlobalNamingResources>`用于定义全局JNDI资源,以及`<Valve>`(阀门)元素,它可以插入自定义的请求处理逻辑。...
- **<Context>**:最常用的元素,每个`<Context>`代表一个独立的Web应用程序,一个`<Host>`可以包含多个`<Context>`。 ### Tomcat组件之间的关系 Tomcat的组件通过嵌套的方式组织,形成了层次化的结构,如下所示: ...
需要在`<Context>`元素中添加`<Resource>`元素来定义C3P0数据源。示例配置如下: ```xml <Context path="/eba" docBase="D:\work\eba\eba" debug="0" privileged="true" reloadable="true"> <Resource name=...
该文件的基本结构包括了`<Server>`、`<Service>`、`<Connector>`、`<Engine>`、`<Host>`和`<Context>`等元素。 - `<Server>`:是整个Servlet容器的顶层元素,可以包含一个或多个`<Service>`元素。 - `<Service>`:...
- `<Host>` 元素代表一个虚拟主机,可以配置多个 `<Context>` 来部署不同的 Web 应用程序。 - 每个 `<Host>` 元素可以对应一个特定的域名或 IP 地址。 6. **Context 组件** - `<Context>` 元素是 `<Host>` 的子...
<Context path="/xkb" docBase="F:\XKB6\webApp" debug="5" reloadable="true" crossContext="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_DBTest_log." suffix=".txt" ...
在结构上,Tomcat的顶层类元素包括`<Server>`和`<Service>`,连接器类元素负责通信接口,而容器类元素则分为`Engine`、`Host`和`Context`,它们分别负责处理请求、特定虚拟主机请求和特定Web应用请求。所有的Tomcat...
- `<Host>`:代表一个虚拟主机,每个`<Host>`可以配置不同的域名,并且可以包含多个`<Context>`。这样,同一台服务器可以托管多个网站。 - `<Context>`:是最底层的容器,对应一个Java Web应用。它负责处理特定的...
其中,`<Valve>`元素用于指定允许访问Manager应用的IP地址范围。默认情况下,使用正则表达式`^.*$`表示允许所有IP地址访问。可以根据实际需求修改为具体的IP地址或地址段。 #### 四、配置Maven的`settings.xml` ...