无法在Tomcat 7中完全取消部署Web应用程序

我正在使用tomcat 7中的pipe理器应用程序,我无法完全取消部署应用程序。

它说FAIL - Unable to delete [F:\apache-tomcat-7.0.33\webapps\balaji]. The continued presence of this file may cause problems. FAIL - Unable to delete [F:\apache-tomcat-7.0.33\webapps\balaji]. The continued presence of this file may cause problems.

我在某个地方读了它,因为有些现象称为内存泄漏,如果我们解决了这个问题,问题就会解决。

谁能告诉我这是什么内存泄漏在tomcat 7,我们如何解决? 我正在使用Windows 7操作系统。 如果我能解决这个问题,我的un-deploy和re-deploy过程会顺利吗?

这在Windows环境中很常见,但有一个解决scheme:

从/ tomcat / conf文件夹打开context.xml并修改上下文以匹配:

 <Context antiResourceLocking="true"> 

编辑:更新@JanM评论后的属性。 此前它还包含“antiJARLocking”

这是tomcat常见的问题之一。 Tomcat服务器在启动时捕获资源,并部署它。 在取消部署的同时,一些资源仍然会被tomcat使用。 它还不会释放资源,但同时,tomcat中的另一个线程将尝试清理相同的资源。 因此,删除这些资源将会失败。 最好的方法是手动清理webapps中的应用程序根目录。

我在Apache Tomcat / 8.0.5中遇到过同样的问题。 我使用pipe理器应用程序执行以下步骤,它为我工作。

  • closures包含所有选项卡的浏览器(删除caching)。
  • 重新打开“pipe理员应用程序”,首先确保应用程序已停止(应启用启动button)。
  • 现在点击undeploy。

我认为当我们直接点击取消部署时,首先lockingjar子,停止应用程序并尝试取消部署,但失败并FAIL - Unable to delete消息。

如果你真的与状态混淆,closures浏览器,重新启动tomcat,打开“经理应用程序”,点击停止,然后取消部署。

反资源锁:
如果为true,Tomcat将阻止任何文件locking。 这将显着影响应用程序的启动时间,但可以在可能发生文件locking的平台或configuration上进行完全的Web应用程序热部署和取消部署。 如果未指定,则默认值为false。

请注意,将其设置为true会产生一些副作用,包括在正在运行的服务器中禁用JSP重新加载:请参阅Bugzilla 37668。

请注意,在主机的appBase之外的应用程序(默认情况下是webapps目录)中将此标志设置为true将导致应用程序在Tomcatclosures时被删除。 您可能不希望这样做,所以在为其主机的appBase之外的webapp上设置antiResourceLocking = true之前,请三思。

Interesting Posts