在使用Manager取消部署应用程序时,如何让Tomcat删除Web应用程序工件?
我正在使用Tomcat 6.0.18。该应用程序是使用tomcat-maven-plugin 1.0-SNAPSHOT部署的,但是通过maven插件或Web界面的行为是相同的。
Tomcat文档提供有关取消部署应如何处理的警告 Manager How To
战争档案可以删除;但是,解压缩的应用程序目录仍然阻止重新部署。
答案 0 :(得分:26)
如果您通过应用程序中的URL访问JAR库中的资源,这也可能是文件锁定的问题(特别是在Windows上)。
我遇到了类似的问题,并通过修改
中的以下行来修复它Apache Tomcat / conf / context.xml
文件到:
<Context antiJARLocking="true" antiResourceLocking="true" >
(请注意,这是否是生产安全的争论,因为它为每次重新部署创建了您的webapp的副本,但如果您在Windows上并且无法在源处解决问题,则可能提供可行的解决方案)。
答案 1 :(得分:2)
可能是您的应用程序无法完全取消部署,因为有后台线程(您最有可能自己开始)或长时间运行的请求阻止应用程序完全停止。
您是否检查过日志文件?他们是否说明应用程序是否可以成功取消部署?或者相反?在尝试取消部署后,你可以获得一个线程转储(在Unix上杀死-3 processid,在Windows的控制台中杀死Ctrl-Break),看看是否还有一些东西不能运行?
另请注意,我看过的大多数应用程序无法完全取消部署它们所占用的内存。我经常遇到OutOfMemoryErrors(PermGen),特别是在重新部署webapps之后(如果你谷歌的话,你会发现很多关于PermGen的引用)因此我认为重新部署对开发机器来说是好的,但不适用于生产机器。在生产中对此感到困惑之前,最好先了解这一点。