Tomcat内置环境变量技术咨询:编辑server.xml上下文路径时如何获取指向Tomcat安装目录的内置变量
Tomcat内置环境变量与webapps目录上下文配置
当然有啦!Tomcat确实提供了内置的环境变量来指向它的安装或运行目录,最常用的两个就是${catalina.home}和${catalina.base},帮你轻松配置上下文路径,不用写死绝对路径。
先给你理清楚这两个变量的区别:
${catalina.home}:指向Tomcat的核心安装目录,里面包含bin、lib、conf这些所有Tomcat实例共享的核心文件夹,是Tomcat程序本身的存放位置。${catalina.base}:指向Tomcat的实例运行目录,默认情况下它和${catalina.home}是同一个路径(当你只运行单个Tomcat实例时);如果是多实例部署,每个实例会有自己独立的base目录,存放该实例专属的conf、webapps、logs等文件。
接下来告诉你怎么在server.xml里用这些变量配置指向webapps目录的上下文路径。比如你想给webapps里的某个应用配置自定义路径,或者直接映射整个webapps目录,都可以这么写:
示例1:给webapps里的某个应用配置额外上下文路径
在<Host>标签内添加<Context>元素:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- 把webapps/myapp映射到/my-custom-path路径 --> <Context path="/my-custom-path" docBase="${catalina.base}/webapps/myapp" reloadable="true" /> </Host>
示例2:直接映射整个webapps目录到某个路径
如果你想让一个路径直接指向整个webapps目录(不过一般不推荐,因为webapps下是独立的应用),可以这么配置:
<Context path="/all-apps" docBase="${catalina.home}/webapps" />
最后提几个小注意点:
- 默认情况下,Tomcat会自动部署webapps下的所有应用,应用的上下文路径就是文件夹的名称(比如webapps/myapp会自动映射到
/myapp),如果你只是需要额外的路径映射,上面的配置就够用。 - 修改
server.xml后必须重启Tomcat才能生效,要是想避免重启,更推荐在conf/Catalina/localhost目录下创建单独的XML配置文件(比如my-custom-path.xml)来配置上下文,不过用内置变量的方式在两种配置里都适用。
内容的提问来源于stack exchange,提问作者Tacitus86
相关产品推荐
相关产品推荐

