Within the servlet container you will only have one instance of the servlet
class so there is no need to use static variables. Other people have made good
points that if the container tosses out the servlet instead of serializing it
for later use the classloader will re-initialize the counter.

Ismael wrote:

> At 04:11 25/07/2001 -0700, you wrote:
> >Ismael,
> >
> >Beware of static variables in servlets.
> >
> >Use application level variables...initialized from the init(). Put this in
> >any servlet, just as long as its used at least once.
> >
> >     public void init(ServletConfig config) throws ServletException {
> >         super.init(config);
> >
> >        Long counter = (Long)getServletContext().getAttribute("counter");
> >
> >
> >          if (counter == null) {
> >
> >              counter = new Long(0);
> >              getServletContext().setAttribute("counter",counter);
> >
> >          }
> >
> >
> >     }
> >
> >
> >Then throughout your web application in jsp's or servlets you can increment
> >your counter.
> >
> >static variables are only for one servlet class, so if you have more than
> >one servlet or jsp, it won't work.
>
> Static variables from a class represent a variable that should be share by
> all the instances of this class. On my jsp I use this
> as a counter, and this variable should be share by all the resquests. Using
> this mechanism is lighter and faster than using a varible stored
> on the servlet context. Maybe this way it works, but I think that using a
> static variable should also work.
> Regards,
> Ismael
>
> >Regards,
> >
> >the elephantwalker
> >
> >
> >-----Original Message-----
> >From: [EMAIL PROTECTED]
> >[mailto:[EMAIL PROTECTED]]On Behalf Of Ismael
> >Sent: Wednesday, July 25, 2001 2:33 AM
> >To: Orion-Interest
> >Subject: Re: Very Strange problem with a static varible on a jsp
> >
> >
> >Sorry, But I do not understand what you mean.
> >What I want is to have only a counter for all the requests.
> >
> >
> >At 13:35 24/07/2001 -0500, you wrote:
> > >Instead of static I would use a member attribute, since for servlets
> > >only one instance exists for a given class.
> > >
> > >Ismael wrote:
> > >
> > > >  I am making some loading tests, in order to test the loading tool I
> > > > have written some special jsp to deal verify the number of times a jsp
> > > > has been called.
> > > > My jsp is :
> > > >
> > > > <%@page contentType="text/html"%>
> > > > <html>
> > > > <head><title>JSP Page</title></head>
> > > > <body>
> > > > <%!
> > > > static int client=0;
> > > > static String attribute_name="client";
> > > > static Object lock=new Object();
> > > > %>
> > > > <%-- This JSP will be used with 4 other jsp to test the correctness of
> > > > the stress tool
> > > > --%>
> > > > <%
> > > > synchronized (application) {
> > > > session.setAttribute(attribute_name,new Integer(++client));
> > > > System.out.println("Entering client "+client);
> > > >
> > > >
> > > > }
> > > > %>
> > > > </body>
> > > > </html>:
> > > >
> > > >
> > > > It is very simple but the ouput I get is
> > > > Entering client  1
> > > > Entering client  2
> > > > Entering client  3
> > > > Entering client  4
> > > > Entering client  1
> > > > Entering client  1
> > > > Entering client  1
> > > > Entering client  1
> > > > Entering client  1
> > > > Entering client  5
> > > > Entering client  2
> > > > Entering client  3
> > > > Entering client  4
> > > > Entering client  5
> > > > Entering client  6
> > > > Entering client  7
> > > > Entering client  8
> > > > Entering client  9
> > > > Entering client  10
> > > > Entering client  11
> > > > Entering client  12
> > > > Entering client  13
> > > > Entering client  14
> > > > Entering client  15
> > > > Entering client  16
> > > > ..
> > > > That is, my static variable it is being ignored. I am using Orion
> > > > 1.4.5 , Windows 2000 and J2SE 1.3.0_02.
> > > >
> > > > Anybody know why this could be happening ?
> > > >
> > > > Regards,
> > > > Ismael
> > > >
> > > >


Reply via email to