Class 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 accessible LogFactory class that the entry in its map for the current webapp's context classloader should be cleared.

    Since:
    1.1
    Version:
    $Id: ServletContextCleaner.java 1432580 2013-01-13 10:41:05Z tn $
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.lang.Class[] RELEASE_SIGNATURE  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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 static final 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