Apache-tomcat-8.5.29覆盖爆炸文件夹的内容?



我正在从旧版本的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的回答,我接受。

最新更新