You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Graham Smith <gr...@crazysquirrel.com> on 2004/06/10 18:31:48 UTC
contextInitialized being called exactly twice
Hi,
I am absolutely stumped by this problem. For some reason that I can't
fathom the contextInitialized method on a ServletContextListener I have
in one of my web applications is being called twice. Normally this isn't
a problem since it only causes the load process to take longer but I
have recently added a new section that starts a daemon thread and it
this double call is causing two threads to be created. What is even more
bizarre is that I have tried using a static int to count the number of
times the method is called but it always returns one. I suspected that
it therefore must be created by a different class loader but a call to
getClass().getClassLoader and a dump (see below) of information would
seem to indicate that it is in fact the same class loader loading the
class. I am using tomcat 5.0.25 on Linux with Java 1.4.2_04. I have also
performed a thread dump in order to check that it is _really_ being run
twice and sure enough there are two copies of my thread running (again
see extract below).
Any help would be greatly appreciated.
Graham
ClassLoader dump:
----------------------------------------------------
First time it is loaded
----------------------------------------------------
ClassLoader: WebappClassLoader
delegate: false
repositories:
----------> Parent Classloader:
StandardClassLoader
delegate: true
repositories:
file:/home/gms/dump/tomcat/shared/classes/
----------> Parent Classloader:
StandardClassLoader
delegate: true
repositories:
file:/home/gms/dump/tomcat/common/classes/
file:/home/gms/dump/tomcat/common/endorsed/xercesImpl.jar
file:/home/gms/dump/tomcat/common/endorsed/xmlParserAPIs.jar
file:/home/gms/dump/tomcat/common/lib/ant.jar
file:/home/gms/dump/tomcat/common/lib/commons-collections.jar
file:/home/gms/dump/tomcat/common/lib/commons-dbcp-1.1.jar
file:/home/gms/dump/tomcat/common/lib/commons-el.jar
file:/home/gms/dump/tomcat/common/lib/commons-pool-1.1.jar
file:/home/gms/dump/tomcat/common/lib/jasper-compiler.jar
file:/home/gms/dump/tomcat/common/lib/jasper-runtime.jar
file:/home/gms/dump/tomcat/common/lib/jsp-api.jar
file:/home/gms/dump/tomcat/common/lib/naming-common.jar
file:/home/gms/dump/tomcat/common/lib/naming-factory.jar
file:/home/gms/dump/tomcat/common/lib/naming-java.jar
file:/home/gms/dump/tomcat/common/lib/naming-resources.jar
file:/home/gms/dump/tomcat/common/lib/servlet-api.jar
----------> Parent Classloader:
sun.misc.Launcher$AppClassLoader@136228
----------------------------------------------------
Second time it is loaded
----------------------------------------------------
ClassLoader: WebappClassLoader
delegate: false
repositories:
----------> Parent Classloader:
StandardClassLoader
delegate: true
repositories:
file:/home/gms/dump/tomcat/shared/classes/
----------> Parent Classloader:
StandardClassLoader
delegate: true
repositories:
file:/home/gms/dump/tomcat/common/classes/
file:/home/gms/dump/tomcat/common/endorsed/xercesImpl.jar
file:/home/gms/dump/tomcat/common/endorsed/xmlParserAPIs.jar
file:/home/gms/dump/tomcat/common/lib/ant.jar
file:/home/gms/dump/tomcat/common/lib/commons-collections.jar
file:/home/gms/dump/tomcat/common/lib/commons-dbcp-1.1.jar
file:/home/gms/dump/tomcat/common/lib/commons-el.jar
file:/home/gms/dump/tomcat/common/lib/commons-pool-1.1.jar
file:/home/gms/dump/tomcat/common/lib/jasper-compiler.jar
file:/home/gms/dump/tomcat/common/lib/jasper-runtime.jar
file:/home/gms/dump/tomcat/common/lib/jsp-api.jar
file:/home/gms/dump/tomcat/common/lib/naming-common.jar
file:/home/gms/dump/tomcat/common/lib/naming-factory.jar
file:/home/gms/dump/tomcat/common/lib/naming-java.jar
file:/home/gms/dump/tomcat/common/lib/naming-resources.jar
file:/home/gms/dump/tomcat/common/lib/servlet-api.jar
----------> Parent Classloader:
sun.misc.Launcher$AppClassLoader@136228
----------------------------------------------------
Extract of thread dump
----------------------------------------------------
......
"ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon prio=1
tid=0x0848eb98 nid=0x7d54 waiting on condition [4d90d000..4d90d854]
at java.lang.Thread.sleep(Native Method)
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1597)
at java.lang.Thread.run(Thread.java:534)
"category statistics generator" daemon prio=1 tid=0x082e6960 nid=0x7d54
waiting on condition [4e1de000..4e1de854]
at java.lang.Thread.sleep(Native Method)
at
com.crazysquirrel.xfly.category.CategoryStats.run(CategoryStats.java:73)
at java.lang.Thread.run(Thread.java:534)
"directory cleaner" daemon prio=1 tid=0x0852dd30 nid=0x7d54 waiting on
condition [4e15d000..4e15d854]
at java.lang.Thread.sleep(Native Method)
at
com.crazysquirrel.xfly.web.DirectoryCleaner.run(DirectoryCleaner.java:80)
at java.lang.Thread.run(Thread.java:534)
"category statistics generator" daemon prio=1 tid=0x085072f8 nid=0x7d54
waiting on condition [4e0dc000..4e0dc854]
at java.lang.Thread.sleep(Native Method)
at
com.crazysquirrel.xfly.category.CategoryStats.run(CategoryStats.java:73)
at java.lang.Thread.run(Thread.java:534)
"directory cleaner" daemon prio=1 tid=0x084e7ea8 nid=0x7d54 waiting on
condition [4e05b000..4e05b854]
at java.lang.Thread.sleep(Native Method)
at
com.crazysquirrel.xfly.web.DirectoryCleaner.run(DirectoryCleaner.java:80)
at java.lang.Thread.run(Thread.java:534)
"Signal Dispatcher" daemon prio=1 tid=0x08096a50 nid=0x7d54 waiting on
condition [0..0]
........
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org