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

时间:2012-03-27 19:14:52

标签: tomcat deployment

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

  

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

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

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

  

删除 WAR文件将触发取消部署应用程序   删除任何关联的扩展目录,上下文文件和   工作目录。任何当前的用户会话都不会被保留。“

答案 1 :(得分:0)

听起来像“ antiResourceLocking”

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

我还没有尝试过,所以这完全未经“书”测试。来了。

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

  在Windows上,

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

...并且适当的配置开关似乎叫antiResourceLocking,显然是...

  

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

(来源here。已存档here。)

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

进一步阅读

相关问题