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:

[...SNIP...]
<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"/>
        <GlobalNamingResources>
[...SNIP...]

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 [mailto:[EMAIL PROTECTED] 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


From: http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/context.html

*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" ... >
 ...
</Context>
        
   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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to