Tomcat 主目录环境变量

Tomcat home directory environment variable

我目前正在编辑 server.xml 上下文路径,并希望有一个返回原始 webapps 目录的上下文路径。是否有内置的 tomcat 环境变量指向 tomcat 安装目录,如 TOMCAT_HOME 或其他?

正如评论中指出的那样,Tomcat 安装目录可用 ${catalina.home} 属性,而 Tomcat 实例根目录通过 ${catalina.base} (参见Tomcat documentation)。例如。您可以使用 ${catalina.home}/webapps/manager 作为 Tomcat 管理器应用程序的位置。

但是我不会在 server.xml 中为 Tomcat 管理器和其他应用程序定义上下文:它们在其文件夹的 META-INF/context.xml 文件中有自己的上下文定义,因此它们可能不应该在 server.xml 中重新定义:这样您可以丢失一些重要的配置属性(例如 Tomcat 管理器的 privileged="true")。

更好的解决方案是将这些定义复制到 conf/Catalina/localhost/<appname>.xml 并添加 docBase="${catalina.home}/webapps/<appname> 属性。例如。对于 Tomcat 管理器,您应该创建一个名为 conf/Catalina/localhost/manager.xml 的文件,内容为:

<Context docBase="${catalina.home}/webapps/manager" antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter$LruCache(?:$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>