Apache-tomcat-8.5.29覆盖展开文件夹的内容?

Apache-tomcat-8.5.29 overrides the content of the exploded folder?

我正在从旧版本 tomcat 升级到 8.5.29
我有一个 tomcat 服务器,其中有 WAR 个文件和展开的文件夹

tomcat8/webapps/xerox.war tomcat8/webapps/xerox

展开的文件夹包含 WAR
中不存在的补丁 我希望 tomcat 仅使用展开的文件夹并忽略 WAR 文件。

所以在 server.xml 中,在 Host 部分我将 unpackWARs 设置为 true,将 autoDeploy 设置为 false,
它似乎无法正常工作,并且在重启后 exploded 文件夹中的内容被覆盖/删除。

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="false">

我做错了什么?

Tomcat 在解压缩的 WAR 文件夹 (tomcat8/webapps/xerox) 中创建一个 META-INF/war-tracker 空文件。如果以毫秒为单位的修改时间(参见 stat,因为我假设你在 *nix 下)对于他的 WAR 文件和跟踪器来说完全相同,那么目录是独立的。否则 Tomcat 删除目录并再次解压 WAR 文件。

autoDeploy="false" 设置不会影响此行为,除非您还设置了 deployOnStartup="false",在这种情况下 WAR 文件和扩展目录都将被 Tomcat.这不是您想要的。

你有两个解决方案:

  • 停止Tomcat并删除WAR文件,
  • 保留它们,但检查是否有某些东西(例如备份系统)没有修改 WAR 文件和跟踪器文件的时间戳。

使用我不知道存在的关于 war-tracker 的第一个答案...

我最终找到了这个方法,看起来效果不错

touch ./tomcat8_NEW/webapps/xerox/META-INF/war-tracker -r ./tomcat001_old/webapps/xerox.war

这会在 META-INF 目录中创建一个新的 war-tracker 文件并克隆 WAR 时间戳
所以 tomcat 认为 WAR 没有变化,也不对展开的目录做任何事情。

谢谢@Piotr P. Karwasz 的回答,我会接受的。