You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kf...@apache.org on 2014/03/12 06:04:07 UTC

svn commit: r1576582 - in /tomcat/trunk: java/org/apache/catalina/ java/org/apache/catalina/ha/session/ java/org/apache/catalina/manager/ java/org/apache/catalina/session/ webapps/docs/

Author: kfujino
Date: Wed Mar 12 05:04:06 2014
New Revision: 1576582

URL: http://svn.apache.org/r1576582
Log:
Add methods of get the idle time from last client access time to org.apache.catalina.Session. 

Modified:
    tomcat/trunk/java/org/apache/catalina/Session.java
    tomcat/trunk/java/org/apache/catalina/ha/session/DeltaSession.java
    tomcat/trunk/java/org/apache/catalina/manager/DummyProxySession.java
    tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java
    tomcat/trunk/java/org/apache/catalina/session/PersistentManagerBase.java
    tomcat/trunk/java/org/apache/catalina/session/StandardSession.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/Session.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/Session.java?rev=1576582&r1=1576581&r2=1576582&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/Session.java (original)
+++ tomcat/trunk/java/org/apache/catalina/Session.java Wed Mar 12 05:04:06 2014
@@ -166,6 +166,17 @@ public interface Session {
     public long getLastAccessedTimeInternal();
 
     /**
+     * Return the idle time (in milliseconds) from last client access time.
+     */
+    public long getIdleTime();
+
+    /**
+     * Return the idle time from last client access time without invalidation check
+     * @see #getIdleTime()
+     */
+    public long getIdleTimeInternal();
+
+    /**
      * Return the Manager within which this Session is valid.
      */
     public Manager getManager();

Modified: tomcat/trunk/java/org/apache/catalina/ha/session/DeltaSession.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/DeltaSession.java?rev=1576582&r1=1576581&r2=1576582&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/session/DeltaSession.java (original)
+++ tomcat/trunk/java/org/apache/catalina/ha/session/DeltaSession.java Wed Mar 12 05:04:06 2014
@@ -386,13 +386,7 @@ public class DeltaSession extends Standa
             return true;
         }
         if (maxInactiveInterval > 0) {
-            long timeNow = System.currentTimeMillis();
-            int timeIdle;
-            if (LAST_ACCESS_AT_START) {
-                timeIdle = (int) ((timeNow - lastAccessedTime) / 1000L);
-            } else {
-                timeIdle = (int) ((timeNow - thisAccessedTime) / 1000L);
-            }
+            int timeIdle = (int) (getIdleTimeInternal() / 1000L);
             if (isPrimarySession()) {
                 if (timeIdle >= maxInactiveInterval) {
                     expire(true);

Modified: tomcat/trunk/java/org/apache/catalina/manager/DummyProxySession.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/DummyProxySession.java?rev=1576582&r1=1576581&r2=1576582&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/DummyProxySession.java (original)
+++ tomcat/trunk/java/org/apache/catalina/manager/DummyProxySession.java Wed Mar 12 05:04:06 2014
@@ -89,6 +89,16 @@ public class DummyProxySession implement
     }
 
     @Override
+    public long getIdleTime() {
+        return 0;
+    }
+
+    @Override
+    public long getIdleTimeInternal() {
+        return 0;
+    }
+
+    @Override
     public Manager getManager() {
         return null;
     }

Modified: tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java?rev=1576582&r1=1576581&r2=1576582&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java Wed Mar 12 05:04:06 2014
@@ -45,7 +45,6 @@ import org.apache.catalina.Container;
 import org.apache.catalina.ContainerServlet;
 import org.apache.catalina.Context;
 import org.apache.catalina.Engine;
-import org.apache.catalina.Globals;
 import org.apache.catalina.Host;
 import org.apache.catalina.Manager;
 import org.apache.catalina.Server;
@@ -157,19 +156,6 @@ public class ManagerServlet extends Http
 
     private static final long serialVersionUID = 1L;
 
-    protected static final boolean LAST_ACCESS_AT_START;
-
-    static {
-        String lastAccessAtStart = System.getProperty(
-                "org.apache.catalina.session.StandardSession.LAST_ACCESS_AT_START");
-        if (lastAccessAtStart == null) {
-            LAST_ACCESS_AT_START = Globals.STRICT_SERVLET_COMPLIANCE;
-        } else {
-            LAST_ACCESS_AT_START =
-                Boolean.valueOf(lastAccessAtStart).booleanValue();
-        }
-    }
-
     // ----------------------------------------------------- Instance Variables
 
 
@@ -1181,14 +1167,8 @@ public class ManagerServlet extends Http
             int [] timeout = new int[maxCount];
             int notimeout = 0;
             int expired = 0;
-            long now = System.currentTimeMillis();
             for (int i = 0; i < sessions.length; i++) {
-                int time;
-                if (LAST_ACCESS_AT_START) {
-                    time = (int) ((now - sessions[i].getLastAccessedTimeInternal()) / 1000L);
-                } else {
-                    time = (int) ((now - sessions[i].getThisAccessedTimeInternal()) / 1000L);
-                }
+                int time = (int) (sessions[i].getIdleTimeInternal() / 1000L);
                 if (idle >= 0 && time >= idle*60) {
                     sessions[i].expire();
                     expired++;

Modified: tomcat/trunk/java/org/apache/catalina/session/PersistentManagerBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/PersistentManagerBase.java?rev=1576582&r1=1576581&r2=1576582&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/PersistentManagerBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/PersistentManagerBase.java Wed Mar 12 05:04:06 2014
@@ -889,7 +889,6 @@ public abstract class PersistentManagerB
             return;
 
         Session sessions[] = findSessions();
-        long timeNow = System.currentTimeMillis();
 
         // Swap out all sessions idle longer than maxIdleSwap
         if (maxIdleSwap >= 0) {
@@ -898,12 +897,7 @@ public abstract class PersistentManagerB
                 synchronized (session) {
                     if (!session.isValid())
                         continue;
-                    int timeIdle;
-                    if (StandardSession.LAST_ACCESS_AT_START) {
-                        timeIdle = (int) ((timeNow - session.getLastAccessedTime()) / 1000L);
-                    } else {
-                        timeIdle = (int) ((timeNow - session.getThisAccessedTime()) / 1000L);
-                    }
+                    int timeIdle = (int) (session.getIdleTime() / 1000L);
                     if (timeIdle > maxIdleSwap && timeIdle > minIdleSwap) {
                         if (session.accessCount != null &&
                                 session.accessCount.get() > 0) {
@@ -948,17 +942,11 @@ public abstract class PersistentManagerB
                  Integer.valueOf(sessions.length)));
 
         int toswap = sessions.length - getMaxActiveSessions();
-        long timeNow = System.currentTimeMillis();
 
         for (int i = 0; i < sessions.length && toswap > 0; i++) {
             StandardSession session =  (StandardSession) sessions[i];
             synchronized (session) {
-                int timeIdle;
-                if (StandardSession.LAST_ACCESS_AT_START) {
-                    timeIdle = (int) ((timeNow - session.getLastAccessedTime()) / 1000L);
-                } else {
-                    timeIdle = (int) ((timeNow - session.getThisAccessedTime()) / 1000L);
-                }
+                int timeIdle = (int) (session.getIdleTime() / 1000L);
                 if (timeIdle > minIdleSwap) {
                     if (session.accessCount != null &&
                             session.accessCount.get() > 0) {
@@ -992,7 +980,6 @@ public abstract class PersistentManagerB
             return;
 
         Session sessions[] = findSessions();
-        long timeNow = System.currentTimeMillis();
 
         // Back up all sessions idle longer than maxIdleBackup
         if (maxIdleBackup >= 0) {
@@ -1001,12 +988,7 @@ public abstract class PersistentManagerB
                 synchronized (session) {
                     if (!session.isValid())
                         continue;
-                    int timeIdle;
-                    if (StandardSession.LAST_ACCESS_AT_START) {
-                        timeIdle = (int) ((timeNow - session.getLastAccessedTime()) / 1000L);
-                    } else {
-                        timeIdle = (int) ((timeNow - session.getThisAccessedTime()) / 1000L);
-                    }
+                    int timeIdle = (int) (session.getIdleTime() / 1000L);
                     if (timeIdle > maxIdleBackup) {
                         if (log.isDebugEnabled())
                             log.debug(sm.getString

Modified: tomcat/trunk/java/org/apache/catalina/session/StandardSession.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/StandardSession.java?rev=1576582&r1=1576581&r2=1576582&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/StandardSession.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/StandardSession.java Wed Mar 12 05:04:06 2014
@@ -529,6 +529,36 @@ public class StandardSession implements 
     }
 
     /**
+     * Return the idle time (in milliseconds) from last client access time.
+     */
+    @Override
+    public long getIdleTime() {
+
+        if (!isValidInternal()) {
+            throw new IllegalStateException
+                (sm.getString("standardSession.getIdleTime.ise"));
+        }
+
+        return getIdleTimeInternal();
+    }
+
+    /**
+     * Return the idle time from last client access time without invalidation check
+     * @see #getIdleTime()
+     */
+    @Override
+    public long getIdleTimeInternal() {
+        long timeNow = System.currentTimeMillis();
+        long timeIdle;
+        if (LAST_ACCESS_AT_START) {
+            timeIdle = timeNow - lastAccessedTime;
+        } else {
+            timeIdle = timeNow - thisAccessedTime;
+        }
+        return timeIdle;
+    }
+
+    /**
      * Return the Manager within which this Session is valid.
      */
     @Override
@@ -669,13 +699,7 @@ public class StandardSession implements 
         }
 
         if (maxInactiveInterval > 0) {
-            long timeNow = System.currentTimeMillis();
-            int timeIdle;
-            if (LAST_ACCESS_AT_START) {
-                timeIdle = (int) ((timeNow - lastAccessedTime) / 1000L);
-            } else {
-                timeIdle = (int) ((timeNow - thisAccessedTime) / 1000L);
-            }
+            int timeIdle = (int) (getIdleTimeInternal() / 1000L);
             if (timeIdle >= maxInactiveInterval) {
                 expire(true);
             }

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1576582&r1=1576581&r2=1576582&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed Mar 12 05:04:06 2014
@@ -104,6 +104,10 @@
         just the file name to refer to refer to the JavaEE schema on which they
         are based. (markt)
       </add>
+      <add>
+        Add methods of get the idle time from last client access time to
+        <code>org.apache.catalina.Session</code>. (kfujino)
+      </add>
     </changelog>
   </subsection>
   <subsection name="Coyote">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org