放置新war文件时,Tomcat webapp文件夹被破坏

放置新war文件时,Tomcat webapp文件夹被破坏,tomcat,deployment,Tomcat,Deployment,通常,当我将更新的WAR文件放入Tomcat的webapps文件夹时,相应的webapp会自动更新 但有时,当我放入更新的WAR文件时,会发生一件奇怪的事情:除了一些随机收集的文件外,该Web应用程序的大部分文件夹都被删除了。当然,在这种情况下,webapp不再工作。为了让它工作,我必须停止Tomcat,完全删除该webapp的文件夹,然后重新启动Tomcat 在将WAR文件放入webapps之前,我试图从Tomcat管理器中停止webapp,但没有效果 我试图将autodeploy和/或unp

通常,当我将更新的WAR文件放入Tomcat的
webapps
文件夹时,相应的webapp会自动更新

但有时,当我放入更新的WAR文件时,会发生一件奇怪的事情:除了一些随机收集的文件外,该Web应用程序的大部分文件夹都被删除了。当然,在这种情况下,webapp不再工作。为了让它工作,我必须停止Tomcat,完全删除该webapp的文件夹,然后重新启动Tomcat

在将WAR文件放入
webapps
之前,我试图从Tomcat管理器中停止webapp,但没有效果

我试图将
autodeploy
和/或
unpackwars
更改为false,但当我放入新的war文件时,webapp根本没有更新

我还尝试使用Jenkins的部署插件,但同样的问题发生了


系统规范:Windows 2003上的Tomcat 7。

根据Tomcat 7配置指南:

更新WAR文件将触发应用程序的取消部署,其中 删除任何关联的扩展目录、上下文文件和 工作目录。任何当前用户会话都不会被持久化 应用程序将在下次自动部署程序检查时重新部署 为了改变。”

可能问题在于,自动部署程序还没有完成删除扩展目录的工作,而另一个线程开始重新部署它

我的解决方法是删除旧的war文件,等待目录被删除,然后才放入新的war文件,因为:

删除WAR文件将触发应用程序的取消部署,其中 删除任何关联的扩展目录、上下文文件和 工作目录。将不会持久化任何当前用户会话。“

听起来像是“反资源走私” 免责声明:1。是的,我知道这是个老问题。2.完全未经测试

我没有尝试过这个,所以这是未经测试的纯粹的“书籍”的东西。来吧

(已存档)至少提到在Windows上进行热部署需要额外的步骤。即

在Windows上,这假定防锁功能(请参阅 已启用上下文配置),否则无法 删除正在运行的web应用程序的资源

…而合适的配置开关似乎是一种叫做
反资源锁定的东西,它显然

允许在可能发生文件锁定的平台或配置上进行完整的webapp热部署和取消部署

(Source.Archived.)

我不确定,但所有这些听起来确实有点像“如果您尝试在Windows上热部署而不使用antiresourcelock=true,则可能会发生未定义的行为”。这听起来很糟糕

进一步阅读
  • 矩阵。从文档中的矩阵判断,我认为它相当复杂。
    (因此,我个人的底线是:我不会使用自动部署,除非我必须这样做。而是按照您所做的操作,手动删除目录并解包。)

    • (已存档。)