【问题标题】:Tomcat home directory environment variableTomcat 主目录环境变量
【发布时间】:2021-03-19 14:22:24
【问题描述】:

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

【问题讨论】:

  • 环境变量CATALINA_HOME and CATALINA_BASE可以通过server.xml中的${catalina.home}${catalina.base}访问。然而大多数路径已经相对于CATALINA_BASE。你能更好地解释你想要达到的目标吗?好像是XY problem,或许有更好的解决方案。
  • 我改变了我的 时,日志文件 stderror 说它找不到 C:\FB20\web\webapps。所以基本上我想把它改成 TOMCAT_HOME/webapps。

标签: tomcat tomcat10


【解决方案1】:

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

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

更好的解决方案是将这些定义复制到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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2011-12-15
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多