2009-01-27 60 views
14

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

我正在使用Tomcat 6.0.18。该应用程序使用tomcat-maven-plugin 1.0-SNAPSHOT进行部署,但行为与Maven插件或Web界面相同。

Tomcat文档提供了有关如何取消部署应该如何在 Manager How To上表现的警告。

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

回答

2

可能是因为存在后台线程(您最有可能自己开始)或长时间运行的请求阻止应用程序完全停止,您的应用程序无法完全取消部署。

您检查了日志文件吗?他们是否说明应用程序是否可以成功取消部署?或者相反?尝试取消部署后(在Unix上杀掉-3个processid,在Windows中控制台上按Ctrl-Break),并且看看是否还有某些不应该运行的东西,是否可以获得线程转储?

另请注意,我所看到的大多数应用程序无法完全取消部署他们所用的内存。我经常遇到OutOfMemoryErrors(PermGen),特别是在重新部署webapps之后(如果你google的话,你会发现很多关于PermGen的参考),因此我认为重新部署适合开发机器,但不适用于生产版本。在生产中让你感到困惑之前,最好先了解一下。

26

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

我刚做了一个类似的问题,并通过修改下列行

的Apache Tomcat/conf/context.xml文件

文件来固定它:

<Context antiJARLocking="true" antiResourceLocking="true" > 

(请注意,对于这是否安全生产存在一些争议,因为它会为每次重新部署创建Web应用程序的副本,但是如果您在Windows上并且无法解决问题在源头上,这可能会提供一个可行的解决方案)。

+1

这个诀窍适合我。我在使用“grails test tomcat undeploy”命令取消部署我的grails应用程序时遇到了问题。但有了这些选项,它只是神奇地开始工作 – 2010-12-16 12:15:02

相关问题