Tomcat取消部署不会删除Web应用程序工件

Ste*_*ord 14 tomcat

在使用Manager取消部署应用程序时,如何让Tomcat删除Web应用程序工件?

我正在使用Tomcat 6.0.18.使用tomcat-maven-plugin 1.0-SNAPSHOT部署应用程序,但是通过maven插件或Web界面的行为是相同的.

Tomcat文档提供有关取消部署应如何Manager How To上执行操作的警告 .

war文件可以删除; 但是,解压缩的应用程序目录仍然阻止重新部署.

Ric*_*ols 26

如果您通过应用程序中的URL访问JAR库中的资源,那么它也可能是文件锁定的问题(特别是在Windows上).

我只是有一个类似的问题,并通过修改以下行修复它

Apache Tomcat/conf/context.xml

档案:

<Context antiJARLocking="true" antiResourceLocking="true" >
Run Code Online (Sandbox Code Playgroud)

(请注意,这是否是生产安全的争论,因为它为每次重新部署创建了webapp的副本,但是如果您在Windows上并且无法在源处修复问题,那么这可能提供可行的解).

  • 请注意,Tomcat docs说:"`antiJARLocking`是`antiResourceLocking`的子集,因此,为了防止重复工作和可能的问题,这些属性中的任何一个都应该在任何时候设置为true." (6认同)

Ola*_*ock 2

您的应用程序可能无法完全卸载,因为存在后台线程(您很可能自己启动)或长时间运行的请求阻止应用程序完全停止。

您检查过日志文件吗?他们是否声明应用程序是否可以成功卸载?或者相反?在尝试取消部署(在 Unix 上杀死 -3 processid,在 Windows 控制台中按 Ctrl-Break)后,您能否获得线程转储并查看是否有不应该运行的内容仍在运行?

另请注意,我见过的大多数应用程序都无法完全卸载它们占用的内存。我经常遇到 OutOfMemoryErrors (PermGen),特别是在重新部署 webapp 之后(如果你用 google 搜索,你会发现很多关于 PermGen 的参考资料),因此我相信重新部署对于开发机器来说是可以的,但对于生产机器来说就不行了。在生产中对此感到困惑之前,最好先了解一下这一点。