Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tomcat 6 | What's the significance of antiResourceLocking & antiJARLocking?

I am working on a project where we'll be using Tomcat 6.0.20 for Development and production.

I came across some issues related to hot deployment which requires one to set Context.antiResourceLocking to false in server.xml. I had some questions on antiResourceLocking and antiJARLocking. I have gone through the reference at http://tomcat.apache.org/tomcat-6.0-doc/config/context.html.

What I can't understand is what exactly do you mean by a JAR getting locked or a resource getting locked. What I have read so far is that the locking problem usually comes when you are undeploying an application which fails due to a process having a lock on the file/jar. Can someone please point me to anything where I can read more on this issue?

My questions are: 1) If I set antiJARLocking and/or antiResourceLocking to false what are the problems that I can get? Can some one please provide an example? 2) Is it a bad practice to set these attributes to false in a production environment? 2) Is it true that locking won't occur on a Linux box as frequently as it can happen on a Windows box?

Appreciate your help.

Thank you.

Govind N.

like image 792
Govind N Avatar asked Apr 29 '10 14:04

Govind N


2 Answers

Here are my answers to these:

1) From what I can tell, setting antiJARLocking and/or antiResourceLocking to false could only cause problems on Windows (though I vaguely remember a Tomcat developer claiming that it also affects Linux -- I'm disregarding that because I have seen zero evidence of it, and no examples / detailed explanations proving it).

2) It is only bad practice to set these to false when Tomcat is running on Windows.

Second 2)!! I have been running Tomcat on multiple Linux distributions and versions for more than ten years. I have never once seen a jar locking or resource locking problem due to not setting one of those attributes to true. As far as I know, it doesn't happen, but it might depend on the filesystem implementation you're using, and I always either used EXT2, EXT3, or EXT4.

If you still have questions about this, ask about it on the Tomcat-user mailing list.

Cheers!

Jason Brittain Co-author, Tomcat: The Definitive Guide (O'Reilly)

like image 123
Yavin5 Avatar answered Oct 05 '22 05:10

Yavin5


1) I had built a system around svn to automatically build and deploy a webapp, the deployment was made via the Tomcat ant tasks, and with antiJARLocking and/or antiResourceLocking to false the application was not undeployed properly, because tomcat could not delete some jars and the log4j.properties config file, thus the deploy failed. So I had to set these properties to true, and tomcat did a copy of the webapp in the temp dir. This makes the deployment slower and with nearly each redeploy the temp dir grew in size, so I had to make a procedure to delete older deployments of my app from the temp dir. It is safe to delete deployments from the temp dir at any time, because tomcat will redeploy the app to the temp dir.

2) From the tomcat docs I understood that the problems with jar locking or resource locking occur only on Windows. I wouldn't set these properties to true in a production environment, because there's no need to redeploy so often, and with java it's always a good idea to do a server restart after redeploy in production (an OutOfMemoryError is always lurking in the dark, even if your own code doesn't leak). Another minor issue is that the app being deployed to the temp dir, if you modify a jsp or another file in the webapps dir, it won't be redeployed unless you copy the changes to the temp dir also.

like image 35
Victor Ionescu Avatar answered Oct 05 '22 06:10

Victor Ionescu