Tomcat:定义上下文,[Enginename]和[Hostname]是什么?

lan*_*oxx 6 tomcat

在Tomcat的文档中,有关定义上下文的部分列出了以下用于定义上下文的选项:

  1. 在应用程序文件内/META-INF/context.xml中的单个文件中。
  2. 在目录中的单个文件中(扩展名为“ .xml”)$CATALINA_BASE/conf/[enginename]/[hostname]/。上下文路径和版本将从文件的基本名称(文件名减去.xml扩展名)派生。该文件将始终优先于Web应用程序的META-INF目录中打包的任何context.xml文件。
  3. 在主conf / server.xml中的Host元素内。

选项1不好,因为这意味着必须对应用程序工件内部的值进行硬编码,并且不能轻易更改它们。

文档积极建议不使用选项3

不建议将元素直接放置在server.xml文件中。

这仅给我们留下了选项2,特别是如果我们想以不同的配置多次部署同一应用程序(例如,一个用于生产,一个用于测试),则这是唯一的选择。

但是,文档没有说明什么,应该是什么[enginename][hostname]默认设置。

这些的默认值是什么,我可以在哪里更改它们?

lan*_*oxx 5

TL; DR [enginename]通常是Catalina并且[hostname]通常是localhost

简单说明

在Tomcat附带的默认配置中,在中配置了引擎$CATALINA_HOME/conf/server.xml,在该文件的末尾,您通常会看到以下内容:

<Engine name="Catalina" defaultHost="localhost">

    ...         

    <Host name="localhost"  appBase="webapps"
          unpackWARs="true" autoDeploy="true">
</Engine>
Run Code Online (Sandbox Code Playgroud)

name财产<Engine>元素是enginenamename该财产<Host>元素是hostname

更长的解释

通过阅读Tomcat文档的HostEngine页面,可以在两个地方找到答案 。

对于<Engine>元素,有趣的值是:

defaultHost:

默认主机名,它标识将处理定向到此服务器上主机名的请求但未在此配置文件中配置的主机。此名称必须与嵌套在其中的Host元素之一的名称属性匹配。

名称:

此引擎的逻辑名称,用于日志和错误消息。在同一服务器中使用多个服务元素时,必须为每个引擎分配一个唯一的名称。

对于<Host>元素,它指出:

名称:

通常,此虚拟主机的网络名称(在您的域名服务服务器中注册)。不管用于指定主机名的大小写如何,Tomcat都会在内部将其转换为小写形式。嵌套在引擎中的主机之一必须具有与该引擎的defaultHost设置匹配的名称。有关如何为同一虚拟主机分配多个网络名称的信息,请参阅主机名别名。