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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org