Tomcat:定义一个Context,什么是[Enginename]和[Hostname]?

时间:2017-05-25 12:58:38

标签: tomcat

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

  1. 在应用程序文件内的/META-INF/context.xml中的单个文件中。
  2. <html> <head> <title>Movie Mania</title> <link rel="stylesheet" type="text/css" href="Movie.css"> <script src="Movie.js"></script> </head> <body> <div class="content"> <div class="matter"> <p class="header">Movie Mania</p> <div class="regis"> <form class="reg"> <input type="text" name="user" id="movie" placeholder="Please enter any movie name" size="40"> <hr> <div><input type="submit" class="button" value="Search" id="sub" onclick="validation()" /></div> </div> </div> </div> </form> </body> </html>目录中的单个文件(扩展名为“.xml”)中。上下文路径和版本将从文件的基本名称(文件名减去.xml扩展名)派生。此文件始终优先于Web应用程序的META-INF目录中打包的任何context.xml文件。
  3. 主conf / server.xml中的Host元素。
  4. 选项1 很糟糕,因为这意味着必须对应用程序工件中的值进行硬编码,并且无法轻松更改这些值。

    文档强烈建议不要

    选项3

      

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

    这只留给我们选项2 ,特别是如果我们想要使用不同的配置多次部署相同的应用程序(例如,一个用于生产,一个用于测试),这是唯一的选择。 / p>

    但是文档没有解释,$CATALINA_BASE/conf/[enginename]/[hostname]/[enginename]应该是什么,或者它们默认为什么。

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

1 个答案:

答案 0 :(得分:4)

<强> 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>

name元素的<Engine>属性是enginenamename元素的<Host>属性是hostname

更长的解释

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

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

<强> defaultHost:

  

默认主机名,用于标识将处理指向此服务器上的主机名但未在此配置文件中配置的请求的主机。该名称必须与其中一个嵌入的Host元素的名称属性匹配。

命名

  

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

对于<Host>元素,它声明:

命名

  

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