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