配置Tomcat的元素

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

[b]3.3.4 配置Tomcat的元素[/b]

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

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

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


(续表)

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

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


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

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

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

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

/conf/Catalina/localhost/context.xml.default

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

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

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

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

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


以上元素的 docBase 属性表明,helloapp 应用的文件路径为/webapps/helloapp;path属性表明访问helloapp应用的URL入口为“/helloapp”。

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


以上元素的 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 的元素,如果采用第五种方式配置元素,最常见的做法是在该元素中插入子元素,例如:
unpackWARs="true"        autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">



Tips

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

你可能感兴趣的:(应用服务器)