Author: ajaquith
Date: Wed Dec 31 09:32:48 2008
New Revision: 730420
URL: http://svn.apache.org/viewvc?rev=730420&view=rev
Log:
SessionMonitor now calls WikiEngine.shutdown() when the webapp context is
unloaded. It didn't before, which meant containers would accumulate threads and
eventually exhaust memory.
Modified:
incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/auth/SessionMonitor.java
Modified: incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/auth/SessionMonitor.java
URL:
http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/auth/SessionMonitor.java?rev=730420&r1=730419&r2=730420&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/auth/SessionMonitor.java
(original)
+++ incubator/jspwiki/trunk/src/com/ecyrd/jspwiki/auth/SessionMonitor.java Wed
Dec 31 09:32:48 2008
@@ -23,6 +23,8 @@
import java.security.Principal;
import java.util.*;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@@ -45,7 +47,7 @@
* web.xml for the wiki web application.
* </p>
*/
-public class SessionMonitor implements HttpSessionListener
+public class SessionMonitor implements HttpSessionListener,
ServletContextListener
{
private static Logger log = LoggerFactory.getLogger( SessionMonitor.class
);
@@ -283,4 +285,28 @@
}
}
}
+
+ /**
+ * No-op.
+ * @param sce the servlet context event
+ */
+ public void contextInitialized( ServletContextEvent sce )
+ {
+ }
+
+ /**
+ * When the servlet context is destroyed, this method
+ * obtains the associated WikiEngine and executes its
+ * {...@link com.ecyrd.jspwiki.WikiEngine#shutdown()}
+ * method.
+ * @param sce the servlet context event
+ */
+ public void contextDestroyed( ServletContextEvent sce )
+ {
+ WikiEngine engine = WikiEngine.getInstance( sce.getServletContext(),
null );
+ if ( engine != null )
+ {
+ engine.shutdown();
+ }
+ }
}