tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Garret Wilson <gar...@globalmentor.com>
Subject Re: Tomcat multiple init(), no init param
Date Mon, 26 Jun 2006 00:00:46 GMT
Everyone,

I found the answer to my second question, "Why isn't myServlet2.init() 
called before the second call to myServlet1.init()?" It turns out it was 
being called, but my debug trace statements had been redirected because 
my init() method had successfully redirected debug output.

So the sequence now looks like this:

1. myServlet1.init() is called. The init parameter "dataDirectory" is 
correctly set to "/var/web/data/www.example.com/", and debug output is 
successfully redirected.

2. myServlet2.init() is called. The init parameter "dataDirectory" is 
correctly set to "/var/web/data/www.example.com/", and debug output is 
still successfully redirected.

3. catalina.out indicates "Jun 25, 2006 4:23:40 PM 
org.apache.catalina.startup.HostConfig deployWAR" followed by "INFO: 
Deploying web application archive www.example.com.war

4. myServlet1.init() is called. The init parameter "dataDirectory" 
returns null, the static variable is no longer set, and output is no 
longer redirected.

5. myServlet2.init() is called. The init parameter "dataDirectory" 
returns null, the static variable is no longer set, and output is no 
longer redirected..

Note that in step 1 I set a static variable in my servlet that is 
verified in step 2. But by step 4 the static variable is gone!

Note that if I change unpackWARs="true", these errors still occur, even 
if I restart Tomcat after the WARs have been unpacked! (The only 
difference is that, in step 4, I have access to the real path of the 
WEB-INF directory.)

It's as if two instances of Tomcat are being run in two separate JVMS: 
one using the server.xml configuration, and another attempting to deploy 
the .war files using some default configuration. The first set of 
initialized servlets continue to run and accept connections. What's 
wrong here?

Thanks in advance,

Garret

Garret Wilson wrote:
> Tomcat 5.5.16 seems to call a servlet's init() method several times, 
> and the specific init parameter is missing in all but the first.
>
> I have a simple server.xml that includes:
>
> <Host name="www.example.com" appBase="/var/web/apps"
> unpackWARs="false" autoDeploy="false"
> xmlValidation="false" xmlNamespaceAware="false">
>
>    <Alias>example.com</Alias>
>
>    <Context path="" docBase="www.example.com.war">
>        <Parameter name="dataDirectory" 
> value="/var/web/data/www.example.com/"/>
>    </Context>
>
> </Host>
>
> In www.example.com.war I have a web.xml file that includes two 
> instances of MyServlet, with servlet names of myServlet1 and 
> myServlet2, mapped to "/*" and "/example/*", respectively.
>
> Tomcat does the following, which I find odd:
>
> 1. myServlet1.init() is called. The init parameter "dataDirectory" is 
> correctly set to "/var/web/data/www.example.com/".
>
> 2. catalina.out indicates "Jun 25, 2006 2:07:26 PM 
> org.apache.catalina.startup.HostConfig deployWAR".
>
> 3. myServlet.init is called(). The init parameter "dataDirectory" 
> returns null.
>
> 4. myServlet2.init is called(). The init parameter "dataDirectory" 
> returns null.
>
> (Then steps 3 and 4 are repeated, presumably because steps 2 and 3 
> throw NullPointerExceptions, which results from the missing init 
> parameter.)
>
> This confuses me:
>
> * Why is myServlet1.init() called twice?
> * Why isn't myServlet2.init() called before the second call to 
> myServlet1.init()?
> * Why is the init parameter "dataDirectory" only available in the 
> first call to myServlet1.init()?
>
> Thanks for any insight,
>
> Garret
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message