On Thu, 23 Aug 2001, Zach Hollandsworth wrote:

> Date: Thu, 23 Aug 2001 18:37:11 -0500
> From: Zach Hollandsworth <[EMAIL PROTECTED]>
> Reply-To: [EMAIL PROTECTED], [EMAIL PROTECTED]
> To: [EMAIL PROTECTED]
> Subject: RE: static variables in multiple contexts  PLEASE HELP
>
> Any idea why my static variables are carrying across contexts then?  another
> issue that I noticed and I think this is the same, but my servlet
> "StaticTest" is usable from the examples context and it isn't even in that
> context.  Its as if the contexts do not mean anything, as if they are
> arbitrary?!  any ideas?
>

Did you *read* my answer?

Where are the class files that contain your static variables?  Or the
class StaticTest?

If these classes are in $TOMCAT_HOME, or on your CLASSPATH, then crossing
context boundaries is correct behavior.  All of these classes are global
to *all* web apps.  (The fact that you can execute StaticTest from the
examples web app *strongly* suggests that this is what is going on).

If these classes are inside /WEB-INF/classes (or in a JAR file inside
/WEB-INF/lib) inside your web app, then the statics will *not* be global
-- they will be local to that web app.

> Zach
>

Craig


> -----Original Message-----
> From: craigmcc@localhost [mailto:craigmcc@localhost]On Behalf Of Craig
> R. McClanahan
> Sent: Thursday, August 23, 2001 6:13 PM
> To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
> Subject: Re: static variables in multiple contexts PLEASE HELP
>
>
> This was answered (again, it's a popular question) yesterday.
>
> Whether a static is global or not depends on where the class is loaded
> from.  If it's loaded from /WEB-INF/classes or /WEB-INF/lib, the static is
> local to your web app.  If the class is loaded from Tomcat's "lib"
> directory, or from the CLASSPATH, it is global to all web apps.
>
> Craig
>
>
> On Thu, 23 Aug 2001, Zach Hollandsworth wrote:
>
> > Date: Thu, 23 Aug 2001 16:27:14 -0500
> > From: Zach Hollandsworth <[EMAIL PROTECTED]>
> > Reply-To: [EMAIL PROTECTED], [EMAIL PROTECTED]
> > To: [EMAIL PROTECTED]
> > Subject: static variables in multiple contexts  PLEASE HELP
> >
> > I have asked this question a couple of times in here with no replies.  I
> > have two separate contexts with the same class.  The class has a static
> > variable and I would like to have different static variables across
> > contexts.  the source to an example class is as follows:
> >
> > public class StaticTest extends HttpServlet
> > {
> >     private static int test = 0;
> >     public void doGet(HttpServletRequest request, HttpServletResponse
> response)
> > throws IOException
> >     {
> >             response.getWriter().println(getTest());
> >     }
> >
> >     public static int getTest()
> >     {
> >             if (test == 0)
> >                     test = new Random().nextInt();
> >             return test;
> >     }
> > }
> >
> >
> > It appears to work as I expect with a different number for each context it
> > is placed in on a windows platform, but on linux, the numbers returned are
> > the same and the static is set once!
> >
> >
> > should it be?
> >
> >
> > thanks
> > Zach
> >
> >
> >
>
>
>
>

Reply via email to