For more information on tomcat's classloading concept have a look at: http://jakarta.apache.org/tomcat/tomcat-5.5-doc/class-loader-howto.html
As you can see there, Tomcat instantiates a classloader for each web application. So if you put a class - let's say "Global" - inside the "WEB-INF/classes" directory of each of two of your web applications, it will be loaded twice. As a fact, a static variable of the "Global" class - let's say Global.myVar - will exist twice too!
But if you put your "Global" class into the %TOMCAT_HOME%/shared/classes directory ONLY (important: you must remove all occurences of your "Global" class from the webapps-classes directories to make this work!), it will be loaded by the "shared"-classloader. Because of the fact that the shared classloader is the parent classloader of all webapp-classloaders, every web-application can access the classes loaded by the shared classloader.
But holding resources in static variables inside the shared/classes directory there is not recommmended! Better add a JNDI-resource to your Tomcat's JNDI-context! This is done in server.xml inside the <GlobalNamingResources>-element* *(see http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/globalresources.html).
Best regards, Tex
Thanks for your reply. I think JVM rules said that there should be 1 reference per JVM for a static variable. Tomcat class loader creates separate instance of a static variable for each webapps. I am just trying to understand how class loader works in tomcat.
Thanks, Anshaj
On Thu, 03 Feb 2005 06:41:29 -0500, Tim Funk <[EMAIL PROTECTED]> wrote:
Put the class in the common or shared classloader.
-Tim
Anshaj Mathur wrote:
Dear group,
I have public class which contains a static variable type integer. I am running different webapps inside single instance of tomcat. I initiated this class in different webapps. I increased the count from a webapp and tried to see it from different webapp. I found that count was not increased in other webapp. It was showing the original count. Am I braking any laws of tomcat security.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
