介绍:
下面的描述使用变量名称“CATALINABASE”来表述大多数相对路径的基本目录。如果尚未通过设置CATALINABASE目录为多个实例配置Tomcat,则CATALINA_BASE将被设置为CATALINA_HOME(已安装Tomcat的目录)的值。
Context元素表示在特定虚拟主机内运行的Web应用程序。每个Web应用程序基于Web应用程序存档(WAR)文件或包含相应的未打包内容的对应目录,如Servlet规范(版本2.2或更高版本)中所述。有关Web应用程序归档的更多信息,可以下载Servlet规范,并查看“Tomcat应用程序开发人员指南”。
用于处理每个HTTP请求的Web应用程序是由Catalina选择的,这是基于将Request URI的最长可能前缀与每个定义的Context的上下文路径进行匹配。一旦选择,该Context将根据Web应用程序部署定义的servlet映射,选择适当的servlet来处理传入的请求。
您可以根据需要定义尽可能多的Context元素。每个这样的上下文必须在虚拟主机内具有唯一的上下文名称。上下文路径不一定是唯一的(参见下面的并行部署)。另外,必须存在具有等于零长度字符串的上下文路径的上下文。此上下文成为此虚拟主机的默认Web应用程序,用于处理与任何其他Context的上下文路径不匹配的所有请求。
部署、命名
当由主机执行autoDeploy或deployOnStartup操作时,Web应用程序的名称和上下文路径是从定义Web应用程序的文件的名称派生的。因此,上下文路径可能不会在嵌入在应用程序中的META-INF / context.xml中定义,并且上下文名称,上下文路径,上下文版本与基本文件名(名称减去任何.war)之间存在密切关系或.xml扩展名)。
如果没有指定版本,则上下文名称始终与上下文路径相同。如果上下文路径是空字符串,则基本名称将为ROOT(总是大写),否则基本名称将是前导“/”被删除的上下文路径,并且剩余的“/”字符替换为“#”。
如果指定了一个版本,则上下文路径保持不变,并且上下文名称和基本名称都附加了字符串“##”,后跟版本标识符。
定义Context
不建议将元素直接放在server.xml文件中。这是因为它使得Context配置更具侵入性,因为在不重新启动Tomcat的情况下,无法重新加载main conf/server.xml文件。
可以明确定义Context元素的位置:
1、在应用程序文件中的/META-INF/context.xml的单个文件中。 (可以根据主机的copyXML属性)可能会被复制到
$CATALINA_BASE/conf /[enginename]/[hostname]/,并重命名为应用程序的基本文件名加上“.xml”扩展名。
2、在$CATALINA_BASE/conf /[enginename]/[hostname]/目录中的单个文件(带有“.xml”扩展名)中。上下文路径和版本将从文件的基本名称导出(文件名称少于.xml扩展名)。该文件将始终优先于打包在Web应用程序的META-INF目录中的任何context.xml文件。
3、在主conf/server.xml中的Host元素内。
可以定义适用于多个Web应用程序的默认上下文元素。单个Web应用程序的配置将覆盖以其中一个默认配置配置的任何内容。任何嵌套元素,例如在默认Context中定义的元素将为默认应用的每个上下文创建一次。它们不会在Context元素之间共享。
1、在$CATALINA_BASE/conf/context.xml文件中:所有Web应用程序将加载Context元素信息。
2、在$CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default文件中:Context元素信息将由该主机的所有Web应用程序加载。
除了server.xml之外,定义Context元素的文件只能定义单个Context元素。
除了明确指定的Context元素之外,还有几种技术可以为您自动创建Context元素。有关详细信息,请参阅自动应用程序部署和用户Web应用程序。
要定义使用单个WAR文件或目录的多个上下文,请使用上面“命名”部分中描述的选项之一创建具有与基本文件名无关的路径的上下文。
关注我的技术公众号,查看更多优质技术文章推送
微信扫一扫下方二维码即可关注: