Tomcat 8.5.24部署WAR文件时上下文路径异常问题求助
解决Tomcat 8.5.24上传WAR部署时上下文路径为完整路径的问题
我之前在Tomcat 8.x版本上也碰到过一模一样的上传部署坑,给你几个亲测有效的解决思路:
1. 上传前重命名WAR文件(最简单直接)
Tomcat默认会用WAR文件的文件名作为上下文路径(去掉.war后缀)。你遇到的问题大概率是上传时Tomcat误把临时存储的完整路径当成了上下文名。
解决办法很简单:
- 把你要上传的WAR文件重命名为你期望的上下文路径名,比如想让上下文是
my-web-app,就把文件改成my-web-app.war - 再通过管理控制台上传,Tomcat就会自动用这个文件名作为上下文路径,不会再用完整路径了
2. 手动创建上下文配置文件
如果不想改WAR文件名,可以在Tomcat的conf/Catalina/localhost目录下创建一个XML配置文件,文件名就是你想要的上下文路径(比如myapp.xml),文件内容指向你上传后的WAR文件路径:
<Context docBase="/path/to/your/uploaded/war/xxx.war" path="/myapp" />
保存后重启Tomcat,就能用/myapp作为上下文路径访问应用了。注意这里的docBase要填上传后WAR文件在服务器上的实际路径,你可以在Tomcat的webapps目录下找到上传后的文件(如果开启了自动解压的话)。
3. 调整Tomcat Host配置
打开conf/server.xml,找到<Host>节点,确保配置了以下参数:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
unpackWARs="true":让Tomcat自动解压WAR文件autoDeploy="true":开启自动部署,Tomcat会监测webapps目录下的变化
如果之前这些参数是false,改成true后重启Tomcat,再尝试上传WAR,应该就能正常识别上下文路径了。
为什么服务器端部署正常?
你用“Deploy directory or WAR file located on server”方式时,Tomcat是直接读取你指定的本地文件/目录,会自动提取文件名作为上下文路径;而上传功能是先把文件传到Tomcat的临时目录,再进行部署,有时候临时路径的处理逻辑会出现异常,导致用完整路径作为上下文。
内容的提问来源于stack exchange,提问作者vini2125
相关产品推荐
相关产品推荐

