You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@locus.apache.org on 2000/11/18 02:34:00 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util SessionIdGenerator.java SessionUtil.java
craigmcc 00/11/17 17:34:00
Modified: src/share/org/apache/tomcat/request Tag: tomcat_32
SessionInterceptor.java
src/share/org/apache/tomcat/session Tag: tomcat_32
StandardManager.java
StandardSessionInterceptor.java
src/share/org/apache/tomcat/util Tag: tomcat_32
SessionIdGenerator.java SessionUtil.java
Log:
Enable the use of load balancing (behind Apache), even when URL rewriting
is used to maintain session state. A *big* thank you to Shai Fultheim for
creating and testing this patch, and then submitting it multiple times
because the underlying source files were being changed for other fixes.
Submitted by: Shai Fultheim <sh...@brm.com>
Revision Changes Path
No revision
No revision
1.24.2.3 +2 -26 jakarta-tomcat/src/share/org/apache/tomcat/request/SessionInterceptor.java
Index: SessionInterceptor.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/request/SessionInterceptor.java,v
retrieving revision 1.24.2.2
retrieving revision 1.24.2.3
diff -u -r1.24.2.2 -r1.24.2.3
--- SessionInterceptor.java 2000/11/11 02:07:02 1.24.2.2
+++ SessionInterceptor.java 2000/11/18 01:33:59 1.24.2.3
@@ -75,6 +75,8 @@
* This implementation only handles Cookies sessions, please extend or
* add new interceptors for other methods.
*
+ * @author costin@eng.sun.com
+ * @author Shai Fultheim [shai@brm.com]
*/
public class SessionInterceptor extends BaseInterceptor
{
@@ -112,8 +114,6 @@
if ((foundAt=uri.indexOf(sig))!=-1){
sessionId=uri.substring(foundAt+sig.length());
- // I hope the optimizer does it's job:-)
- sessionId = fixSessionId( request, sessionId );
// rewrite URL, do I need to do anything more?
request.setRequestURI(uri.substring(0, foundAt));
@@ -126,24 +126,6 @@
return 0;
}
- /** Fix the session id. If the session is not valid return null.
- * It will also clean up the session from load-balancing strings.
- * @return sessionId, or null if not valid
- */
- private String fixSessionId(Request request, String sessionId){
- // GS, We piggyback the JVM id on top of the session cookie
- // Separate them ...
-
- if( debug>0 ) cm.log(" Orig sessionId " + sessionId );
- if (null != sessionId) {
- int idex = sessionId.lastIndexOf(SESSIONID_ROUTE_SEP);
- if(idex > 0) {
- sessionId = sessionId.substring(0, idex);
- }
- }
- return sessionId;
- }
-
public int beforeBody( Request rrequest, Response response ) {
String reqSessionId = response.getSessionId();
if( debug>0 ) cm.log("Before Body " + reqSessionId );
@@ -157,12 +139,6 @@
String sessionPath = rrequest.getContext().getPath();
if(sessionPath.length() == 0) {
sessionPath = "/";
- }
-
- // GS, piggyback the jvm route on the session id.
- String jvmRoute = rrequest.getJvmRoute();
- if(null != jvmRoute) {
- reqSessionId = reqSessionId + SESSIONID_ROUTE_SEP + jvmRoute;
}
Cookie cookie = new Cookie("JSESSIONID",
No revision
No revision
1.11.2.1 +7 -6 jakarta-tomcat/src/share/org/apache/tomcat/session/Attic/StandardManager.java
Index: StandardManager.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/session/Attic/StandardManager.java,v
retrieving revision 1.11
retrieving revision 1.11.2.1
diff -u -r1.11 -r1.11.2.1
--- StandardManager.java 2000/06/18 20:14:13 1.11
+++ StandardManager.java 2000/11/18 01:33:59 1.11.2.1
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/session/Attic/StandardManager.java,v 1.11 2000/06/18 20:14:13 jon Exp $
- * $Revision: 1.11 $
- * $Date: 2000/06/18 20:14:13 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/session/Attic/StandardManager.java,v 1.11.2.1 2000/11/18 01:33:59 craigmcc Exp $
+ * $Revision: 1.11.2.1 $
+ * $Date: 2000/11/18 01:33:59 $
*
* ====================================================================
*
@@ -102,7 +102,8 @@
* @author Craig R. McClanahan
* @author costin@eng.sun.com
* @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
- * @version $Revision: 1.11 $ $Date: 2000/06/18 20:14:13 $
+ * @author Shai Fultheim [shai@brm.com]
+ * @version $Revision: 1.11.2.1 $ $Date: 2000/11/18 01:33:59 $
*/
public final class StandardManager implements Runnable {
// ----------------------------------------------------- Instance Variables
@@ -351,7 +352,7 @@
* @exception IllegalStateException if a new session cannot be
* instantiated for any reason
*/
- public HttpSession getNewSession() {
+ public HttpSession getNewSession(String jsIdent) {
if ((maxActiveSessions >= 0) &&
(sessions.size() >= maxActiveSessions))
@@ -375,7 +376,7 @@
session.setValid(true);
session.setCreationTime(System.currentTimeMillis());
session.setMaxInactiveInterval(this.maxInactiveInterval);
- session.setId(SessionUtil.generateSessionId());
+ session.setId(SessionUtil.generateSessionId(jsIdent));
return (session);
}
1.5.2.3 +2 -16 jakarta-tomcat/src/share/org/apache/tomcat/session/StandardSessionInterceptor.java
Index: StandardSessionInterceptor.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/session/StandardSessionInterceptor.java,v
retrieving revision 1.5.2.2
retrieving revision 1.5.2.3
diff -u -r1.5.2.2 -r1.5.2.3
--- StandardSessionInterceptor.java 2000/11/15 04:19:19 1.5.2.2
+++ StandardSessionInterceptor.java 2000/11/18 01:33:59 1.5.2.3
@@ -86,6 +86,7 @@
*
* @author costin@eng.sun.com
* @author hans@gefionsoftware.com (fixed it so that URL session ID is used)
+ * @author Shai Fultheim [shai@brm.com]
*/
public final class StandardSessionInterceptor extends BaseInterceptor {
int manager_note;
@@ -145,7 +146,6 @@
if (cookie.getName().equals("JSESSIONID")) {
sessionId = cookie.getValue();
- sessionId = fixSessionId( request, sessionId );
if (debug > 0) log("Found session id cookie " + sessionId);
request.setRequestedSessionId( sessionId );
request.setSessionIdSource( Request.SESSIONID_FROM_COOKIE );
@@ -174,7 +174,7 @@
if( request.getSession( false ) != null )
return 0; // somebody already set the session
- HttpSession newS=sM.getNewSession();
+ HttpSession newS=sM.getNewSession(request.getJvmRoute());
request.setSession( newS );
return 0;
}
@@ -237,20 +237,6 @@
} catch(IllegalStateException ex ) {
throw new TomcatException( ex );
}
- }
-
- private String fixSessionId(Request request, String sessionId){
- // GS, We piggyback the JVM id on top of the session cookie
- // Separate them ...
-
- if( debug>0 ) cm.log(" Orig sessionId " + sessionId );
- if (null != sessionId) {
- int idex = sessionId.lastIndexOf(SESSIONID_ROUTE_SEP);
- if(idex > 0) {
- sessionId = sessionId.substring(0, idex);
- }
- }
- return sessionId;
}
}
No revision
No revision
1.3.2.2 +6 -5 jakarta-tomcat/src/share/org/apache/tomcat/util/SessionIdGenerator.java
Index: SessionIdGenerator.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/SessionIdGenerator.java,v
retrieving revision 1.3.2.1
retrieving revision 1.3.2.2
diff -u -r1.3.2.1 -r1.3.2.2
--- SessionIdGenerator.java 2000/08/23 20:23:16 1.3.2.1
+++ SessionIdGenerator.java 2000/11/18 01:33:59 1.3.2.2
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/SessionIdGenerator.java,v 1.3.2.1 2000/08/23 20:23:16 jiricka Exp $
- * $Revision: 1.3.2.1 $
- * $Date: 2000/08/23 20:23:16 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/SessionIdGenerator.java,v 1.3.2.2 2000/11/18 01:33:59 craigmcc Exp $
+ * $Revision: 1.3.2.2 $
+ * $Date: 2000/11/18 01:33:59 $
*
* ====================================================================
*
@@ -76,6 +76,7 @@
* @author James Duncan Davidson [duncan@eng.sun.com]
* @author Jason Hunter [jhunter@acm.org]
* @author Jon S. Stevens <a href="mailto:jon@latchkey.com">jon@latchkey.com</a>
+ * @author Shai Fultheim [shai@brm.com]
*/
public class SessionIdGenerator {
@@ -172,7 +173,7 @@
return sessionId.toString();
}
- public static synchronized String generateId() {
- return getIdentifier(null);
+ public static synchronized String generateId(String jsIdent) {
+ return getIdentifier(jsIdent);
}
}
1.5.2.2 +7 -6 jakarta-tomcat/src/share/org/apache/tomcat/util/Attic/SessionUtil.java
Index: SessionUtil.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/Attic/SessionUtil.java,v
retrieving revision 1.5.2.1
retrieving revision 1.5.2.2
diff -u -r1.5.2.1 -r1.5.2.2
--- SessionUtil.java 2000/08/25 23:01:15 1.5.2.1
+++ SessionUtil.java 2000/11/18 01:34:00 1.5.2.2
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/Attic/SessionUtil.java,v 1.5.2.1 2000/08/25 23:01:15 nacho Exp $
- * $Revision: 1.5.2.1 $
- * $Date: 2000/08/25 23:01:15 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/Attic/SessionUtil.java,v 1.5.2.2 2000/11/18 01:34:00 craigmcc Exp $
+ * $Revision: 1.5.2.2 $
+ * $Date: 2000/11/18 01:34:00 $
*
* ====================================================================
*
@@ -74,7 +74,8 @@
* <code>Session</code> implementations.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.5.2.1 $ $Date: 2000/08/25 23:01:15 $
+ * @author Shai Fultheim [shai@brm.com]
+ * @version $Revision: 1.5.2.2 $ $Date: 2000/11/18 01:34:00 $
*/
public final class SessionUtil {
@@ -175,8 +176,8 @@
/**
* Generate and return a new session identifier.
*/
- public static String generateSessionId() {
- return SessionIdGenerator.generateId();
+ public static String generateSessionId(String jsIdent) {
+ return SessionIdGenerator.generateId(jsIdent);
}
/**