Author: remm Date: Thu Jun 29 04:37:30 2006 New Revision: 418016 URL: http://svn.apache.org/viewvc?rev=418016&view=rev Log: - Redo the session activity check (which prevents expiring a session if there is an extremely long request and a short timeout) as optional, and using an atomic integer.
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/session/StandardSession.java Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/session/StandardSession.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/session/StandardSession.java?rev=418016&r1=418015&r2=418016&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/session/StandardSession.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/session/StandardSession.java Thu Jun 29 04:37:30 2006 @@ -34,6 +34,7 @@ import java.util.Hashtable; import java.util.Iterator; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; @@ -81,6 +82,10 @@ implements HttpSession, Session, Serializable { + protected static final boolean ACTIVITY_CHECK = + Boolean.valueOf(System.getProperty("org.apache.catalina.session.StandardSession.ACTIVITY_CHECK", "false")).booleanValue(); + + // ----------------------------------------------------------- Constructors @@ -272,9 +277,9 @@ /** * The access count for this session. */ - protected transient int accessCount = 0; - + protected transient AtomicInteger accessCount = null; + // ----------------------------------------------------- Session Properties @@ -568,7 +573,7 @@ return false; } - if (accessCount > 0) { + if (ACTIVITY_CHECK && accessCount.get() > 0) { return true; } @@ -606,7 +611,10 @@ this.lastAccessedTime = this.thisAccessedTime; this.thisAccessedTime = System.currentTimeMillis(); - accessCount++; + + if (ACTIVITY_CHECK) { + accessCount.incrementAndGet(); + } } @@ -617,7 +625,10 @@ public void endAccess() { isNew = false; - accessCount--; + + if (ACTIVITY_CHECK) { + accessCount.decrementAndGet(); + } } @@ -697,7 +708,7 @@ } } } - accessCount = 0; + accessCount = null; setValid(false); /* @@ -775,6 +786,11 @@ */ public void activate() { + // Initialize access count + if (ACTIVITY_CHECK) { + accessCount = new AtomicInteger(); + } + // Notify interested session event listeners fireSessionEvent(Session.SESSION_ACTIVATED_EVENT, null); @@ -837,7 +853,7 @@ id = null; lastAccessedTime = 0L; maxInactiveInterval = -1; - accessCount = 0; + accessCount = null; notes.clear(); setPrincipal(null); isNew = false; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]