Tomcat 6 | antiResourceLocking& amp; antiJARLocking?

时间:2010-04-29 14:09:49

标签: tomcat6 server-configuration

我正在开发一个项目,我们将使用Tomcat 6.0.20进行开发和生产。

我遇到了一些与热部署相关的问题,需要在server.xml中将Context.antiResourceLocking设置为false。我对antiResourceLocking和antiJARLocking有一些疑问。 我在http://tomcat.apache.org/tomcat-6.0-doc/config/context.html处完成了参考。

我无法理解的是,JAR被锁定或资源被锁定到底是什么意思?到目前为止我所读到的是,当您取消部署由于进程锁定文件/ jar而失败的应用程序时,通常会出现锁定问题。有人可以指点我可以在这个问题上阅读更多内容吗?

我的问题是: 1)如果我将antiJARLocking和/或antiResourceLocking设置为false,我可以获得哪些问题?有人可以提供一个例子吗? 2)在生产环境中将这些属性设置为false是不好的做法吗? 2)在Windows机顶盒上发生锁定不会像在Windows机顶盒上那样经常发生锁定吗?

感谢您的帮助。

谢谢。

Govind N。

2 个答案:

答案 0 :(得分:5)

以下是我对这些问题的回答:

1)据我所知,将antiJARLocking和/或antiResourceLocking设置为false只会导致Windows出现问题(虽然我依旧记得Tomcat开发人员声称它也会影响Linux - 我无视这一点,因为我已经看到了它没有证据,也没有证明它的例子/详细解释。)

2)当Tomcat在Windows上运行时,将这些设置为false只是不好的做法。

第二次2)!!我已经在多个Linux发行版和版本上运行Tomcat超过十年了。我从未见过jar锁定或资源锁定问题,因为没有将其中一个属性设置为true。据我所知,它不会发生,但它可能取决于你正在使用的文件系统实现,而且我总是使用EXT2,EXT3或EXT4。

如果您对此仍有疑问,请在Tomcat用户邮件列表中询问。

干杯!

杰森布里坦 合着者,Tomcat:The Definitive Guide(O'Reilly)

答案 1 :(得分:4)

1)我已经围绕svn构建了一个系统来自动构建和部署webapp,部署是通过Tomcat ant任务完成的,并且使用antiJARLocking和/或antiResourceLocking为false,应用程序没有正确取消部署,因为tomcat不能删除一些jar和log4j.properties配置文件,因此部署失败。所以我必须将这些属性设置为true,并且tomcat在temp目录中执行了webapp的副本。这使得部署速度变慢,并且几乎每次重新部署时临时目录的大小都会增加,因此我必须制定一个过程来从临时目录中删除我的应用程序的旧部署。可以随时从temp目录中删除部署,因为tomcat会将应用程序重新部署到临时目录。

2)从tomcat docs中我了解jar锁定或资源锁定的问题仅在Windows上发生。我不会在生产环境中将这些属性设置为true,因为不需要经常重新部署,并且使用java,在生产中重新部署后重新部署服务器总是一个好主意(OutOfMemoryError总是潜伏在黑暗中,即使你自己的代码没有泄漏)。另一个小问题是应用程序被部署到临时目录,如果您修改了webapps目录中的jsp或其他文件,除非您将更改复制到临时目录,否则不会重新部署它。