一尘不染

为什么我不应该在生产环境中打开“ antiJARLocking”?

tomcat

我在Tomcat7服务器上运行Web应用程序,但在取消部署它们时遇到了麻烦。Windows似乎在应用程序文件夹中的特定JAR文件上保持锁定。我发现有一个名为“
antiJARLocking”的上下文属性,可以将其设置为“
true”(在此处定义:http
:
//tomcat.apache.org/tomcat-6.0-doc/config/context.html#Standard_Implementation)可能会解决问题。

事实是,我见过很多人说我不应该在生产环境中将此属性设置为true。但是我找不到原因。我知道将此属性设置为true可能会减慢tomcat的启动和/或应用程序的启动速度,但这对我来说似乎不是一个大问题。我错了吗?

您是否知道任何其他原因可以解释为什么某些人可能会阻止在生产中使用“ antiJARLocking”?还有其他解决JAR锁定问题的方法吗?

如果这有什么帮助,我正在运行Tomcat 7.0.40。不断被锁定的jar文件是“ ojbdc6.jar”。

感谢您的帮助!


阅读 234

收藏
2020-06-16

共1个答案

一尘不染

提供了Tomcat的反资源锁定功能,以解决已部署的Web应用程序中导致打开但未关闭文件的错误。在某些操作系统上(主要是Windows),这可以防止文件被删除,进而防止完全取消部署Web应用程序。通常,删除这些文件的唯一方法是先停止Tomcat。反资源锁定将Web应用程序复制到工作目录中的唯一命名目录,然后从那里进行部署。每次重新部署都会获得一个新目录,因此不能删除旧目录并不是一个立即出现的问题。

没有特定的原因为什么不应在生产中使用反资源锁定功能。但是,您确实需要意识到锁定的文件实际上是内存泄漏,并且在多次重新部署之后,您可能最终会填充permGen并触发OOME

锁定odbc6.jar的快速而肮脏的方法是将其从WEB-INF / lib移至$ CATALINA_HOME /
lib。更好的解决方案是弄清楚为什么它被锁定(您可能需要使用探查器和调试器的组合来找到根本原因)并加以解决。

2020-06-16