You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by pe...@apache.org on 2006/03/04 15:47:43 UTC
svn commit: r383122 -
/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java
Author: pero
Date: Sat Mar 4 06:47:43 2006
New Revision: 383122
URL: http://svn.apache.org/viewcvs?rev=383122&view=rev
Log:
Remove ISE from getId and getLastAccessTime to support SingleSignOn valve and other useful session event listener!
add update manager session access stats
Modified:
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java
Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java?rev=383122&r1=383121&r2=383122&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java (original)
+++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java Sat Mar 4 06:47:43 2006
@@ -42,14 +42,12 @@
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
-import org.apache.catalina.Container;
import org.apache.catalina.Context;
import org.apache.catalina.Manager;
import org.apache.catalina.Session;
import org.apache.catalina.SessionEvent;
import org.apache.catalina.SessionListener;
import org.apache.catalina.cluster.ClusterSession;
-import org.apache.catalina.core.StandardContext;
import org.apache.catalina.realm.GenericPrincipal;
import org.apache.catalina.util.Enumerator;
import org.apache.catalina.util.StringManager;
@@ -333,12 +331,6 @@
* Return the session identifier for this session.
*/
public String getId() {
-
- if ( !isValid() ) {
- throw new IllegalStateException
- (sm.getString("standardSession.getId.ise"));
- }
-
return (this.id);
}
@@ -443,13 +435,7 @@
* value associated with the session, do not affect the access time.
*/
public long getLastAccessedTime() {
- if (!isValid) {
- throw new IllegalStateException(sm
- .getString("standardSession.getLastAccessedTime.ise"));
-
- }
return (this.lastAccessedTime);
-
}
/**
@@ -738,10 +724,30 @@
accessCount = 0;
setValid(false);
- // Remove this session from our manager's active sessions
- if (manager != null)
- manager.remove(this);
+ if (manager != null) {
+ /*
+ * Compute how long this session has been alive, and update
+ * session manager's related properties accordingly
+ */
+ long timeNow = System.currentTimeMillis();
+ int timeAlive = (int) ((timeNow - creationTime)/1000);
+ synchronized (manager) {
+ if (timeAlive > manager.getSessionMaxAliveTime()) {
+ manager.setSessionMaxAliveTime(timeAlive);
+ }
+ int numExpired = manager.getExpiredSessions();
+ numExpired++;
+ manager.setExpiredSessions(numExpired);
+ int average = manager.getSessionAverageAliveTime();
+ average = ((average * (numExpired-1)) + timeAlive)/numExpired;
+ manager.setSessionAverageAliveTime(average);
+ }
+
+ // Remove this session from our manager's active sessions
+ manager.remove(this);
+ }
+
// Notify interested session event listeners
if (notify) {
fireSessionEvent(Session.SESSION_DESTROYED_EVENT, null);
@@ -755,14 +761,13 @@
for (int i = 0; i < keys.length; i++)
removeAttributeInternal(keys[i], notify, false);
- if (notifyCluster) {
+ if (notifyCluster && manager != null) {
if (log.isDebugEnabled())
log.debug(smp.getString("deltaSession.notifying",
- ((DeltaManager) manager).getName(), new Boolean(
- isPrimarySession()), expiredId));
+ ((DeltaManager) manager).getName(), new Boolean(
+ isPrimarySession()), expiredId));
((DeltaManager) manager).sessionExpired(expiredId);
}
-
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org