tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Darryl L. Miles" <>
Subject Re: Placing a LifecycleListener in my server.xml
Date Wed, 27 Jul 2005 14:40:38 GMT
Mark Benussi wrote:

>Thanks Darryl
>I have followed this guide but don't know how to add the modify the
>server.xml I attached to reflect this. Also are you saying I should put the
>class that implements the listener in the server/classes?
>I am fine with this but wasn't sure if it would all get loaded together as
>the class is a Singleton that the rest of my code talks to and need to be
>sure it will have access to the same class instance in the JVM.
 From the example you quoted right at the top there is:

<Server port="8005" shutdown="SHUTDOWN" debug="0">
	<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>
	<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>

So you just add your:
   <Listener className="my.domain.class.LifecycleListener"/>

To confirm location grep "jar -tvf tomcat-foobar.jar" from 
$CATALINA_HOME/servers/lib for mbeans/ServerLifecycleListener.class.

As for ensuring the SAME instance of the Singleton is found, maybe you 
must put it into $CATALINA_HOME/common/lib not server/lib!  Please read 
up on the differencies for clarification.

It is my understanding that only the Tomcat Application Server itself 
loads classes from $CATALINA_HOME/servers/* and that all librarys in 
$CATALINA_HOME/common/* are available to both the AS and the WEBAPP 
contexts.  Just make sure you dont override the class by also installing 
it into the WEB-INF/* area.

If this does not work maybe JNDI is the only way, that is bind the 
instance to a JNDI path at the first lifecycle event then all the 
webapps can lookup and use it  (if simplistic class loading does not work).

I have not used this method before as I found other ways to do what I 
needed, I wanted to deploy the listener within my webapp.

>-----Original Message-----
>From: Darryl L. Miles [] 
>Sent: 27 July 2005 12:10
>To: Tomcat Users List
>Subject: Re: Placing a LifecycleListener in my server.xml
>Sorry did not read properly..
>Have you tried:
>for JARs:  $CATALINA_HOME/server/lib or $CATALINA_HOME/common/lib
>for .class: $CATALINA_HOME/server/classes or $CATALINA_HOME/common/classes
>*Lifecycle Listeners*
>    If you have implemented a Java object that needs to know when this
>    *Context* is started or stopped, you can declare it by nesting a
>    *Listener* element inside this element. The class name you specify
>    must implement the |org.apache.catalina.LifecycleListener|
>    interface, and it will be notified about the occurrence of the
>    coresponding lifecycle events. Configuration of such a listener
>    looks like this:
><Context path="/examples" ...>
>  ...
>  <Listener className="com.mycompany.mypackage.MyListener" ... >
>  ...
>    Note that a Listener can have any number of additional properties
>    that may be configured from this element. Attribute names are
>    matched to corresponding JavaBean property names using the standard
>    property method naming patterns.

Darryl L. Miles

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message