From 0540f983cc7e348bc96d2c0b7a8bfa01b4b7fa6d Mon Sep 17 00:00:00 2001 From: rjung Date: Wed, 5 Nov 2008 22:11:04 +0000 Subject: [PATCH] Now expose thisAccessedTime via the session interface and ManagerBase, so we can use it from outside the session. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@711716 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/Session.java | 16 +++++++++++++ .../catalina/ha/session/LocalStrings.properties | 3 ++- .../catalina/ha/session/LocalStrings_es.properties | 1 + .../catalina/session/LocalStrings.properties | 1 + .../catalina/session/LocalStrings_es.properties | 1 + .../catalina/session/LocalStrings_fr.properties | 1 + .../catalina/session/LocalStrings_ja.properties | 1 + java/org/apache/catalina/session/ManagerBase.java | 19 +++++++++++++++- .../apache/catalina/session/StandardSession.java | 26 ++++++++++++++++++++++ 9 files changed, 67 insertions(+), 2 deletions(-) diff --git a/java/org/apache/catalina/Session.java b/java/org/apache/catalina/Session.java index 610084cc3..14766cee8 100644 --- a/java/org/apache/catalina/Session.java +++ b/java/org/apache/catalina/Session.java @@ -131,6 +131,22 @@ public interface Session { * session, as the number of milliseconds since midnight, January 1, 1970 * GMT. Actions that your application takes, such as getting or setting * a value associated with the session, do not affect the access time. + * This one gets updated whenever a request starts. + */ + public long getThisAccessedTime(); + + /** + * Return the last client access time without invalidation check + * @see #getThisAccessedTime(). + */ + public long getThisAccessedTimeInternal(); + + /** + * Return the last time the client sent a request associated with this + * session, as the number of milliseconds since midnight, January 1, 1970 + * GMT. Actions that your application takes, such as getting or setting + * a value associated with the session, do not affect the access time. + * This one gets updated whenever a request finishes. */ public long getLastAccessedTime(); diff --git a/java/org/apache/catalina/ha/session/LocalStrings.properties b/java/org/apache/catalina/ha/session/LocalStrings.properties index 9d513f12c..1c4737a99 100644 --- a/java/org/apache/catalina/ha/session/LocalStrings.properties +++ b/java/org/apache/catalina/ha/session/LocalStrings.properties @@ -98,6 +98,7 @@ standardSession.isNew.ise=isNew: Session already invalidated standardSession.getAttribute.ise=getAttribute: Session already invalidated standardSession.getAttributeNames.ise=getAttributeNames: Session already invalidated standardSession.getCreationTime.ise=getCreationTime: Session already invalidated +standardSession.getThisAccessedTime.ise=getThisAccessedTime: Session already invalidated standardSession.getLastAccessedTime.ise=getLastAccessedTime: Session already invalidated standardSession.getId.ise=getId: Session already invalidated standardSession.getMaxInactiveInterval.ise=getMaxInactiveInterval: Session already invalidated @@ -109,4 +110,4 @@ standardSession.setAttribute.iae=setAttribute: Non-serializable attribute standardSession.setAttribute.ise=setAttribute: Session already invalidated standardSession.setAttribute.namenull=setAttribute: name parameter cannot be null standardSession.sessionCreated=Created Session id = {0} -serializablePrincipal.readPrincipal.cnfe=readPrincipal: Failed to recreate user Principal \ No newline at end of file +serializablePrincipal.readPrincipal.cnfe=readPrincipal: Failed to recreate user Principal diff --git a/java/org/apache/catalina/ha/session/LocalStrings_es.properties b/java/org/apache/catalina/ha/session/LocalStrings_es.properties index 50d9c308f..ec303720b 100644 --- a/java/org/apache/catalina/ha/session/LocalStrings_es.properties +++ b/java/org/apache/catalina/ha/session/LocalStrings_es.properties @@ -98,6 +98,7 @@ standardSession.isNew.ise = isNew\: Sesi\u00F3n ya invalidada standardSession.getAttribute.ise = getAttribute\: Sesi\u00F3n ya invalidada standardSession.getAttributeNames.ise = getAttributeNames\: Sesi\u00F3n ya invalidada standardSession.getCreationTime.ise = getCreationTime\: Sesi\u00F3n ya invalidada +standardSession.getThisAccessedTime.ise = getThisAccessedTime\: Sesi\u00F3n ya invalidada standardSession.getLastAccessedTime.ise = getLastAccessedTime\: Sesi\u00F3n ya invalidada standardSession.getId.ise = getId\: Sesi\u00F3n ya invalidada standardSession.getMaxInactiveInterval.ise = getMaxInactiveInterval\: Sesi\u00F3n ya invalidada diff --git a/java/org/apache/catalina/session/LocalStrings.properties b/java/org/apache/catalina/session/LocalStrings.properties index b7bcb80bc..207fb9fd3 100644 --- a/java/org/apache/catalina/session/LocalStrings.properties +++ b/java/org/apache/catalina/session/LocalStrings.properties @@ -56,6 +56,7 @@ standardSession.isNew.ise=isNew: Session already invalidated standardSession.getAttribute.ise=getAttribute: Session already invalidated standardSession.getAttributeNames.ise=getAttributeNames: Session already invalidated standardSession.getCreationTime.ise=getCreationTime: Session already invalidated +standardSession.getThisAccessedTime.ise=getThisAccessedTime: Session already invalidated standardSession.getLastAccessedTime.ise=getLastAccessedTime: Session already invalidated standardSession.getId.ise=getId: Session already invalidated standardSession.getMaxInactiveInterval.ise=getMaxInactiveInterval: Session already invalidated diff --git a/java/org/apache/catalina/session/LocalStrings_es.properties b/java/org/apache/catalina/session/LocalStrings_es.properties index f406d67b5..d8867809d 100644 --- a/java/org/apache/catalina/session/LocalStrings_es.properties +++ b/java/org/apache/catalina/session/LocalStrings_es.properties @@ -55,6 +55,7 @@ standardSession.isNew.ise = isNew\: La Sesi\u00F3n ya ha sido invalidada standardSession.getAttribute.ise = getAttribute\: La Sesi\u00F3n ya ha sido invalidada standardSession.getAttributeNames.ise = getAttributeNames\: La Sesi\u00F3n ya ha sido invalidada standardSession.getCreationTime.ise = getCreationTime\: La Sesi\u00F3n ya ha sido invalidada +standardSession.getThisAccessedTime.ise = getThisAccessedTime\: La Sesi\u00F3n ya ha sido invalidada standardSession.getLastAccessedTime.ise = getLastAccessedTime\: La Sesi\u00F3n ya ha sido invalidada standardSession.getId.ise = getId\: La Sesi\u00F3n ya ha sido invalidada standardSession.getMaxInactiveInterval.ise = getMaxInactiveInterval\: La Sesi\u00F3n ya ha sido invalidada diff --git a/java/org/apache/catalina/session/LocalStrings_fr.properties b/java/org/apache/catalina/session/LocalStrings_fr.properties index e274b5ee5..58f2842f7 100644 --- a/java/org/apache/catalina/session/LocalStrings_fr.properties +++ b/java/org/apache/catalina/session/LocalStrings_fr.properties @@ -54,6 +54,7 @@ standardSession.isNew.ise="isNew": Session d standardSession.getAttribute.ise="getAttribute": Session déjà invalidée standardSession.getAttributeNames.ise="getAttributeNames": Session déjà invalidée standardSession.getCreationTime.ise="getCreationTime": Session déjà invalidée +standardSession.getThisAccessedTime.ise="getThisAccessedTime": Session d\u00E9j\u00E0 invalid\u00E9e standardSession.getLastAccessedTime.ise="getLastAccessedTime": Session d\u00E9j\u00E0 invalid\u00E9e standardSession.getId.ise=getId: Session déjà invalidée standardSession.getMaxInactiveInterval.ise="getMaxInactiveInterval": Session déjà invalidée diff --git a/java/org/apache/catalina/session/LocalStrings_ja.properties b/java/org/apache/catalina/session/LocalStrings_ja.properties index 995f54200..d270172af 100644 --- a/java/org/apache/catalina/session/LocalStrings_ja.properties +++ b/java/org/apache/catalina/session/LocalStrings_ja.properties @@ -56,6 +56,7 @@ standardSession.isNew.ise=isNew: \u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u65e2\u306 standardSession.getAttribute.ise=getAttribute: \u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u65e2\u306b\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059 standardSession.getAttributeNames.ise=getAttributeNames: \u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u65e2\u306b\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059 standardSession.getCreationTime.ise=getCreationTime: \u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u65e2\u306b\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059 +standardSession.getThisAccessedTime.ise=getThisAccessedTime: \u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u65e2\u306b\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059 standardSession.getLastAccessedTime.ise=getLastAccessedTime: \u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u65e2\u306b\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059 standardSession.getId.ise=getId: \u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u65e2\u306b\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059 standardSession.getMaxInactiveInterval.ise=getMaxInactiveInterval: \u30bb\u30c3\u30b7\u30e7\u30f3\u306f\u65e2\u306b\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059 diff --git a/java/org/apache/catalina/session/ManagerBase.java b/java/org/apache/catalina/session/ManagerBase.java index 731ed991c..7bcffce39 100644 --- a/java/org/apache/catalina/session/ManagerBase.java +++ b/java/org/apache/catalina/session/ManagerBase.java @@ -1228,13 +1228,30 @@ public abstract class ManagerBase implements Manager, MBeanRegistration { s.expire(); } + public long getThisAccessedTimestamp( String sessionId ) { + Session s=(Session)sessions.get(sessionId); + if(s== null) + return -1 ; + return s.getThisAccessedTime(); + } + + public String getThisAccessedTime( String sessionId ) { + Session s=(Session)sessions.get(sessionId); + if( s==null ) { + if(log.isInfoEnabled()) + log.info("Session not found " + sessionId); + return ""; + } + return new Date(s.getThisAccessedTime()).toString(); + } + public long getLastAccessedTimestamp( String sessionId ) { Session s=(Session)sessions.get(sessionId); if(s== null) return -1 ; return s.getLastAccessedTime(); } - + public String getLastAccessedTime( String sessionId ) { Session s=(Session)sessions.get(sessionId); if( s==null ) { diff --git a/java/org/apache/catalina/session/StandardSession.java b/java/org/apache/catalina/session/StandardSession.java index 1d7221091..f5970c9cc 100644 --- a/java/org/apache/catalina/session/StandardSession.java +++ b/java/org/apache/catalina/session/StandardSession.java @@ -432,6 +432,32 @@ public class StandardSession * session, as the number of milliseconds since midnight, January 1, 1970 * GMT. Actions that your application takes, such as getting or setting * a value associated with the session, do not affect the access time. + * This one gets updated whenever a request starts. + */ + public long getThisAccessedTime() { + + if (!isValidInternal()) { + throw new IllegalStateException + (sm.getString("standardSession.getThisAccessedTime.ise")); + } + + return (this.thisAccessedTime); + } + + /** + * Return the last client access time without invalidation check + * @see #getThisAccessedTime(). + */ + public long getThisAccessedTimeInternal() { + return (this.thisAccessedTime); + } + + /** + * Return the last time the client sent a request associated with this + * session, as the number of milliseconds since midnight, January 1, 1970 + * GMT. Actions that your application takes, such as getting or setting + * a value associated with the session, do not affect the access time. + * This one gets updated whenever a request finishes. */ public long getLastAccessedTime() { -- 2.11.0