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