tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Juha Laiho <Juha.La...@iki.fi>
Subject How to inject a webapp listener?
Date Sun, 01 Jul 2007 09:21:14 GMT
Hello,

I would like to have the Tomcat container to inject a specific
ServletContextListener to each loaded webapp on my server - without
touching the individual web.xml files, and am looking for advise on
how to achieve this.

In other words, I'd like to have the container act as if there was
<listener>
  <listener-class>MyListenerClass</listener-class>
</listener>
section in the web.xml file for each application?

Currently, I have added a ContainerListener on my Host, which
is listening on ADD_CHILD messages to discover newly added
StandardContext instances, and performs the following on each
new StandardContext (where ctx is a reference to the added context):

  Object[] listeners = ctx.getApplicationLifecycleListeners();
  Object[] newListeners = new Object[listeners.length+1];
  System.arraycopy(listeners,0,newListeners,0,listeners.length);
  newListeners[newListeners.length-1]=ctxListener;
  ctx.setApplicationLifecycleListeners(newListeners);

With this, my listener is already able to capture the contextDestroyed
events from the webapp - but not the contextInitialized. It looks like the
Context is added to the host only after it has been already initialized.

What I'm looking for is a way to be able to inject the webapp listener
in an earlier phase, so that I can also capture the contextInitialized
messages. Any ideas? Also, if there's an overall better way to inject
the webapp listener, please let me know -- the above way feels rather
crude.

Thanks,
-- 
..Juha

---------------------------------------------------------------------
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