Tomcat主目录环境变量

问题描述

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

解决方法

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

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

更好的解决方案是将这些定义复制到 conf/Catalina/localhost/<appname>.xml 并添加 docBase="${catalina.home}/webapps/<appname> 属性。例如。对于 Tomcat Manager,您应该创建一个名为 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>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...