remm 2003/08/20 01:20:41 Modified: catalina/src/share/org/apache/catalina/session PersistentManagerBase.java Log: - Similar to StoreBase, do not use a per component thread. Revision Changes Path 1.10 +28 -158 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/PersistentManagerBase.java Index: PersistentManagerBase.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/PersistentManagerBase.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- PersistentManagerBase.java 19 Aug 2003 00:49:58 -0000 1.9 +++ PersistentManagerBase.java 20 Aug 2003 08:20:41 -0000 1.10 @@ -98,8 +98,8 @@ public abstract class PersistentManagerBase extends ManagerBase - implements Lifecycle, PropertyChangeListener, Runnable - { + implements Lifecycle, PropertyChangeListener { + private static Log log = LogFactory.getLog(PersistentManagerBase.class); // ---------------------------------------------------- Security Classes @@ -174,12 +174,6 @@ /** - * The interval (in seconds) between checks for expired sessions. - */ - private int checkInterval = 60; - - - /** * The descriptive information about this implementation. */ private static final String info = "PersistentManagerBase/1.0"; @@ -210,24 +204,6 @@ /** - * The background thread. - */ - private Thread thread = null; - - - /** - * The background thread completion semaphore. - */ - protected boolean threadDone = false; - - - /** - * Name to register for the background thread. - */ - private String threadName = "PersistentManagerBase"; - - - /** * Store object which will manage the Session store. */ private Store store = null; @@ -266,33 +242,6 @@ /** - * Return the check interval (in seconds) for this Manager. - */ - public int getCheckInterval() { - - return (this.checkInterval); - - } - - - /** - * Set the check interval (in seconds) for this Manager. - * - * @param checkInterval The new check interval - */ - public void setCheckInterval(int checkInterval) { - - int oldCheckInterval = this.checkInterval; - this.checkInterval = checkInterval; - support.firePropertyChange("checkInterval", - new Integer(oldCheckInterval), - new Integer(this.checkInterval)); - - } - - - - /** * Indicates how many seconds old a session can get, after its last * use in a request, before it should be backed up to the store. -1 * means sessions are not backed up. @@ -602,6 +551,27 @@ /** + * Invalidate all sessions that have expired. + */ + public void processExpires() { + + if (!started) + return; + + long timeNow = System.currentTimeMillis(); + Session sessions[] = findSessions(); + + for (int i = 0; i < sessions.length; i++) { + StandardSession session = (StandardSession) sessions[i]; + if (!session.isValid()) { + session.expire(); + } + } + + } + + + /** * Called by the background thread after active sessions have * been checked for expiration, to allow sessions to be * swapped out, backed up, etc. @@ -981,9 +951,6 @@ else if (store instanceof Lifecycle) ((Lifecycle)store).start(); - // Start the background reaper thread - threadStart(); - } @@ -1009,9 +976,6 @@ lifecycle.fireLifecycleEvent(STOP_EVENT, null); setStarted(false); - // Stop the background reaper thread - threadStop(); - if (getStore() != null && saveOnRestart) { unload(); } else { @@ -1033,7 +997,7 @@ if( initialized ) destroy(); - + } @@ -1070,27 +1034,6 @@ /** - * Invalidate all sessions that have expired. - */ - protected void processExpires() { - - if (!started) - return; - - long timeNow = System.currentTimeMillis(); - Session sessions[] = findSessions(); - - for (int i = 0; i < sessions.length; i++) { - StandardSession session = (StandardSession) sessions[i]; - if (!session.isValid()) { - session.expire(); - } - } - - } - - - /** * Swap idle sessions out to Store if they are idle too long. */ protected void processMaxIdleSwaps() { @@ -1202,79 +1145,6 @@ } } } - } - - } - - - /** - * Sleep for the duration specified by the <code>checkInterval</code> - * property. - */ - protected void threadSleep() { - - try { - Thread.sleep(checkInterval * 1000L); - } catch (InterruptedException e) { - ; - } - - } - - - /** - * Start the background thread that will periodically check for - * session timeouts. - */ - protected void threadStart() { - - if (thread != null) - return; - - threadDone = false; - threadName = "StandardManager[" + container.getName() + "]"; - thread = new Thread(this, threadName); - thread.setDaemon(true); - thread.start(); - - } - - - /** - * Stop the background thread that is periodically checking for - * session timeouts. - */ - protected void threadStop() { - - if (thread == null) - return; - - threadDone = true; - thread.interrupt(); - try { - thread.join(); - } catch (InterruptedException e) { - ; - } - - thread = null; - - } - - - // ------------------------------------------------------ Background Thread - - - /** - * The background thread that checks for session timeouts and shutdown. - */ - public void run() { - - // Loop until the termination semaphore is set - while (!threadDone) { - threadSleep(); - processExpires(); - processPersistenceChecks(); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]