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]