我正在从旧版本的tomcat升级到8.5.29
我有一个tomcat服务器与WAR文件和爆炸文件夹
tomcat8/webapps/施乐。战争和tomcat8/webapps/施乐
爆炸文件夹包含WAR中不存在的补丁
我希望tomcat只使用爆炸文件夹而忽略WAR文件
所以在server.xml中,在Host部分我将unpackWARs设置为true,并将autoDeploy设置为false,
它似乎不工作,并且在爆炸文件夹中的东西在重新启动后被覆盖/删除。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false">
我做错了什么?
Tomcat在解压的WAR文件夹(tomcat8/webapps/xerox
)中创建一个META-INF/war-tracker
空文件。如果以毫秒为单位的修改时间(cf. stat,因为我假设您是在*nix下)对于WAR文件和跟踪器来说完全相同,则不修改目录。否则Tomcat将删除该目录并再次解包WAR文件。
autoDeploy="false"
设置不会影响此行为,除非您还设置了deployOnStartup="false"
,在这种情况下,WAR文件和展开的目录都将被Tomcat忽略。这是而不是你想要什么
你有两个解决方案:
- 停止Tomcat并删除WAR文件,
- 保留它们,但检查是否有东西(例如备份系统)没有修改WAR文件和跟踪器文件的时间戳。
使用我不知道存在的关于战争追踪器的第一个答案…
我最终找到了这个方法,它似乎工作得很好
touch ./tomcat8_NEW/webapps/xerox/META-INF/war-tracker -r ./tomcat001_old/webapps/xerox.war
这将在META-INF目录中创建一个新的WAR跟踪文件,并克隆WAR时间戳
因此tomcat认为WAR没有变化,并且不会对爆炸的dir做任何事情。
谢谢@Piotr p . Karwasz的回答,我接受。