The case:
Nt/Linux v3.2.1,2,3.
There is one context:
<Context path="/ts"
docBase="webapps/ts"
crossContext="true"
debug="1"
reloadable="true"(or false)
trusted="false" >
</Context>
The web.xml piece for this context
<servlet>
<servlet-name>Loader</servlet-name>
<servlet-class>Loader</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
jdb shows double classes named Loader loaded with different instances of
org.apache.tomcat.loader.AdaptiveClassLoader12 which have generation field 2
and 4 correspondingly. If I call
Class.forName("MyClass")
in init method of servlet and MyClass is subclass of thread I have double
threads. And so on.
gc gets nothing and trying to interrupt threads in servlet's destroy method
gets nothing as well.
And this occurs only when servlet is marked as load-on-startup. For ordinary
servlet there is nothing like this.
--Che
> -----Original Message-----
> From: Larry Isaacs [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, August 08, 2001 7:58 PM
> To: '[EMAIL PROTECTED]'
> Subject: RE: Double loading when loading servlet on startup
>
>
> In the past, the cases of "double loading" I've seen have all been
> because an auto-loaded context (created by "AutoSetup" from the
> webapps directory) was also manually loaded as a second context, i.e.
>
> <Context path="/othercontext"
> docBase="webapps/examples" ...
>
> Each context gets its own instance of servlets. As a result,
> init() is called twice, once for each context.
>
> There isn't enough information below to tell if this is the
> source of the double-loading.
>
> Cheers,
> Larry
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> > Sent: Wednesday, August 08, 2001 12:32 PM
> > To: [EMAIL PROTECTED]
> > Subject: RE: Double loading when loading servlet on startup
> >
> >
> > Got the same problem :(((((( (on v3.2.3 - NT)
> >
> > -----Message d'origine-----
> > De : Alexander Cherinko [mailto:[EMAIL PROTECTED]]
> > Envoye : mercredi 8 aout 2001 16:38
> > A : [EMAIL PROTECTED]
> > Objet : Double loading when loading servlet on startup
> >
> >
> > Hi
> > problem is that when I mark servlets as load-on-startup they
> > are loaded
> > twice in jvm.
> > I want this servlet to serve as initializer i.e. to
> > initialize some other
> > classes in its init method.
> > The worst is that that classes are double loaded too. I.e. I
> > want to init
> > class which is Thread subclass to perform periodical custom action. As
> > result I have double threads running in jvm and making the
> > same things! That
> > was obviousely not my real intention.
> > From the other hand when I launch that initializer from
> > common servlet (not
> > loaded on startup) the problem is not present.
> > The most strange thing about it is that in both cases all
> > classes are loaded
> > with the same ClassLoader.
> > I cannot understand is it a bug or just I don't understand something.
> > Please help.
> > --Che
> >
>