org.apache.commons.logging.impl
Class ServletContextCleaner

java.lang.Object
  extended by org.apache.commons.logging.impl.ServletContextCleaner
All Implemented Interfaces:
java.util.EventListener, javax.servlet.ServletContextListener

public class ServletContextCleaner
extends java.lang.Object
implements javax.servlet.ServletContextListener

This class is capable of receiving notifications about the undeployment of a webapp, and responds by ensuring that commons-logging releases all memory associated with the undeployed webapp.

In general, the WeakHashtable support added in commons-logging release 1.1 ensures that logging classes do not hold references that prevent an undeployed webapp's memory from being garbage-collected even when multiple copies of commons-logging are deployed via multiple classloaders (a situation that earlier versions had problems with). However there are some rare cases where the WeakHashtable approach does not work; in these situations specifying this class as a listener for the web application will ensure that all references held by commons-logging are fully released.

To use this class, configure the webapp deployment descriptor to call this class on webapp undeploy; the contextDestroyed method will tell every accessable LogFactory class that the entry in its map for the current webapp's context classloader should be cleared.

Since:
1.1

Field Summary
private  java.lang.Class[] RELEASE_SIGNATURE
           
 
Constructor Summary
ServletContextCleaner()
           
 
Method Summary
 void contextDestroyed(javax.servlet.ServletContextEvent sce)
          Invoked when a webapp is undeployed, this tells the LogFactory class to release any logging information related to the current contextClassloader.
 void contextInitialized(javax.servlet.ServletContextEvent sce)
          Invoked when a webapp is deployed.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RELEASE_SIGNATURE

private java.lang.Class[] RELEASE_SIGNATURE
Constructor Detail

ServletContextCleaner

public ServletContextCleaner()
Method Detail

contextDestroyed

public void contextDestroyed(javax.servlet.ServletContextEvent sce)
Invoked when a webapp is undeployed, this tells the LogFactory class to release any logging information related to the current contextClassloader.

Specified by:
contextDestroyed in interface javax.servlet.ServletContextListener

contextInitialized

public void contextInitialized(javax.servlet.ServletContextEvent sce)
Invoked when a webapp is deployed. Nothing needs to be done here.

Specified by:
contextInitialized in interface javax.servlet.ServletContextListener


Copyright 2002-2004 The Apache Software Foundation.