【问题标题】:Tomcat webapp folder is ruined when putting a new war file放置新的war文件时Tomcat webapp文件夹被破坏
【发布时间】:2012-03-27 19:14:51
【问题描述】:

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

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

在将 WAR 文件放入 webapps 之前,我尝试从 Tomcat 管理器中停止 webapp - 它没有帮助。

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

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

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

【问题讨论】:

    标签: tomcat deployment


    【解决方案1】:

    根据Tomcat 7配置指南:http://tomcat.apache.org/tomcat-7.0-doc/config/host.html#Automatic%20Application%20Deployment

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

    问题可能是自动部署器还没有完成删除扩展目录,而另一个线程开始重新部署它。

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

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

    【讨论】:

      【解决方案2】:

      听起来像“antiResourceLocking”

      免责声明: 1. 是的,我知道这是一个老问题。 2. 完全未经测试。

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

      Tomcat7 documentation(存档的here)至少提到您需要额外的步骤才能在 Windows 上进行热部署。即……

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

      ...适当的配置开关似乎是称为antiResourceLocking 的东西,显然...

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

      (来源here。存档here。)

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

      进一步阅读

      【讨论】:

        猜你喜欢
        • 2013-04-26
        • 2016-04-23
        • 2023-04-05
        • 2014-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多