为什么要开启" antiJARLocking"在生产环境?

时间:2014-03-18 13:11:53

标签: tomcat tomcat7 ojdbc

我在Tomcat7服务器上运行web-apps并且无法取消部署它们。似乎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"。

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

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

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

将odbc6.jar锁定的快速而脏的解决方案是将其从WEB-INF / lib移至$ CATALINA_HOME / lib。更好的解决方案是弄清楚它被锁定的原因(你可能需要使用分析器和调试器的组合来找到根本原因)并修复它。

答案 1 :(得分:1)

根据此wiki

  

您不应在生产中启用此选项。该   antiResourceLocking选项可以阻止JSP重新部署   编辑(webapp的reploy [sic]是必需的instad [sic],有时是   清理工作目录)。有一些小的限制   显然无法获得某种资源路径   正在从特殊运行的webapps的webapp资源   “临时”区域,但我们从未在实践中遇到过它们。