Hi Charlie,

Thanks for confirming this! I was under the impression that static methods
were loaded once and never unloaded, but I wasn't sure.

On the same subject, are class constructors called when static methods are
accessed? Right now, in my "all static method" classes, I'm doing my
initialization in static blocks. I'm wondering if I can move that
initialization into the class constructor, but I'm not sure if/when the
constructor is called when a static method is called.

Any insight on this point, also, is greatly appreciated.

Thanks,
--jeff

----- Original Message -----
From: "Cox, Charlie" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, May 18, 2001 4:28 AM
Subject: RE: Bean Choices (code question)


> there is no gc on static objects. static objects(methods,fields, or
classes)
> are created once on startup and there is only one instance of the method
or
> field ever created that all requestors to your class will use. But with
> Tomcat I do believe that if you have the same class in 2 different
contexts,
> that it will load two separate instances of your bean due to the different
> class loaders.
>
> This also means that if you are writing to the static fields on the
first(or
> any) call, make sure to synchronize the write, in case 2 calls occur at
the
> same time.
>
> Charlie
>
> -----Original Message-----
> From: Jeff Kilbride [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, May 17, 2001 8:56 PM
> To: [EMAIL PROTECTED]
> Subject: Re: Bean Choices (code question)
>
>
> Yeah, I know, but it's tempting to write all the methods as "public
static".
> Then I don't have to create the object at all, but I don't know the
affects
> on garbage collection.
>
> --jeff
>
> ----- Original Message -----
> From: "Ross Dyson" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Thursday, May 17, 2001 5:24 PM
> Subject: RE: Bean Choices (code question)
>
>
> > If you make the bean class have a private constructor and a static
> reference
> > to an instance of its own class, then there will always be a strong
> > reference from the class itself to the instance of the class.  (The
first
> > call to bean.getInstance() instantiates the private static member
variable
> > which is your singleton instance of your bean, the contructor does the
db
> > work etc.)
> >
> > Therefore, it won't get gc'd.
> >
> > That's the way I do my classes that do that kind of stuff, anyway.
> >
> > -----Original Message-----
> > From: Jeff Kilbride [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, 18 May 2001 9:35 AM
> > To: [EMAIL PROTECTED]
> > Subject: Bean Choices (code question)
> >
> >
> > I'm sorry if this is a little off-topic, since it is more about java
code,
> > but I thought Tomcat users would be interested/knowledgeable about the
way
> > beans work.
> >
> > I have a lot of informational beans that hold static reference data
(think
> > ISO codes, State abbreviations, etc...) With these types of beans, I
have
> > the choice of instantiating a singleton object reference to the bean and
> > accessing the methods through the object, or making all the methods
> "public
> > static" so I can access them via BeanName.method(). For the former, the
> bean
> > does all of it's initialization and database access in it's constructor
> and
> > my JSP's have something like the following at the top:
> >
> > <%!
> >     private static BeanName bean = BeanName.getInstance();
> > %>
> >
> > For the latter, the bean does all of it's initialization and database
> access
> > in a static block:
> >
> > static {
> >     // bean initialization and DB access
> > }
> >
> > and my JSPs reference the static methods:
> >
> > <%= BeanName.method() %>
> >
> > My question concerns the way beans with all "public static" methods are
> > instantiated and garbage collected. Because these beans hold unchanging
> > reference info, I only want the data loaded from the database once the
> first
> > time the bean is referenced. For beans with all "public static" methods,
> > since there are no object references to them, when are they garbage
> > collected? Is it possible that the bean will be unloaded and the code in
> my
> > static block will be re-run when the bean is next referenced? Or do
these
> > all static objects somehow stick around forever? For the singleton, I
know
> > the object will last as long as the JSP is loaded, because there is a
> > definite object reference to the singleton. I'm a little unclear as to
> what
> > happens with a bean that has all "public static" methods, though.
> >
> > Can anyone shed some light on this?
> >
> > Thanks,
> > --jeff
> >
> >
>

Reply via email to