Costin: Sorry for the late response, but here are the patches you requested for JvmRoute. This tests out using the session example servlet.
After inclusion of these patches, adding the following attribute to the <Engine> tag in server.xml jvmRoute="fubar" Causes ".fubar" to be appended to the end of all session id's (generated by ManagerBase) as follows: 70AB699891C12D3748248D026012F815.fubar Tom P.S. Having never submitted a patch before, I wasn't sure whether you wanted them all strung together like I've done here, or as attachments. Index: Engine.java =================================================================== RCS file: /home/cvspublic/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/En gine.java,v retrieving revision 1.7 diff -u -r1.7 Engine.java --- Engine.java 16 Oct 2001 23:14:13 -0000 1.7 +++ Engine.java 14 Jan 2002 13:48:07 -0000 @@ -132,6 +132,18 @@ */ public void addDefaultContext(DefaultContext defaultContext); + /** + * Set the JvmRouteId for this engine. + * + * @param jvmRouteId the (new) JVM Route ID. Each Engine within a cluster + * must have the same JVM Route ID. + */ + public void setJvmRoute(String jvmRouteId); + + /** + * Retrieve the JvmRouteId for this engine. + */ + public String getJvmRoute(); // --------------------------------------------------------- Public Methods Index: StandardEngine.java =================================================================== RCS file: /home/cvspublic/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/co re/StandardEngine.java,v retrieving revision 1.12 diff -u -r1.12 StandardEngine.java --- StandardEngine.java 21 Dec 2001 21:15:45 -0000 1.12 +++ StandardEngine.java 14 Jan 2002 13:55:03 -0000 @@ -143,6 +143,11 @@ */ private DefaultContext defaultContext; + /** + * The JVM Route ID for this Tomcat instance. All Route ID's must be unique + * across the cluster. + */ + private String jvmRouteId; // ------------------------------------------------------------- Properties @@ -278,6 +283,24 @@ } + /** + * Set the cluster-wide unique identifier for this Engine. + * This value is only useful in a load-balancing scenario. + * <p> + * This property should not be changed once it is set. + */ + public void setJvmRoute(String routeId) { + this.log("StandardEngine.setJvmRoute="+routeId); + jvmRouteId = routeId; + } + + /** + * Retrieve the cluster-wide unique identifier for this Engine. + * This value is only useful in a load-balancing scenario. + */ + public String getJvmRoute() { + return jvmRouteId; + } /** * Disallow any attempt to set a parent for this Container, since an Index: ManagerBase.java =================================================================== RCS file: /home/cvspublic/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/se ssion/ManagerBase.java,v retrieving revision 1.10 diff -u -r1.10 ManagerBase.java --- ManagerBase.java 10 Dec 2001 01:24:41 -0000 1.10 +++ ManagerBase.java 14 Jan 2002 14:06:45 -0000 @@ -74,6 +74,7 @@ import java.util.HashMap; import java.util.Random; import org.apache.catalina.Container; +import org.apache.catalina.Engine; import org.apache.catalina.Logger; import org.apache.catalina.Manager; import org.apache.catalina.Session; @@ -516,6 +517,30 @@ /** + * Retrieve the enclosing Engine for this Manager. + * + * @return an Engine object (or null). + */ + public Engine getEngine() { + Engine e = null; + for (Container c=getContainer(); e == null && c != null ;c = c.getParent()) { + if (c != null && c instanceof Engine) { + e = (Engine)c; + } + } + return e; + } + + /** + * Retrieve the JvmRoute for the enclosing Engine. + * @return the JvmRoute or null. + */ + public String getJvmRoute() { + Engine e = getEngine(); + return e == null ? null : e.getJvmRoute(); + } + + /** * Construct and return a new session object, based on the default * settings specified by this Manager's properties. The session * id will be assigned by this method, and available via the getId() @@ -547,6 +572,12 @@ session.setCreationTime(System.currentTimeMillis()); session.setMaxInactiveInterval(this.maxInactiveInterval); String sessionId = generateSessionId(); + String jvmRoute = getJvmRoute(); + // @todo Move appending of jvmRoute generateSessionId()??? + if (jvmRoute != null) { + sessionId += '.' + jvmRoute; + session.setId(sessionId); + } /* synchronized (sessions) { while (sessions.get(sessionId) != null) // Guarantee uniqueness ----- Original Message ----- From: <[EMAIL PROTECTED]> To: "Tomcat Developers List" <[EMAIL PROTECTED]> Sent: Thursday, January 10, 2002 8:44 AM Subject: Re: Todo list for 4.0.2 b2 | On Thu, 10 Jan 2002, Tom Drake wrote: | | > FYI: | > | > Based on previous discussions on this list, I've added setJvmRoute/JvmRoute | > to Engine | > (and StandardEngine) as part of the work I've been doing for distributed | > sessions. | | Can you send the patch for this one ? | | There are just 2 changes that are needed - the methods in Engine and | about 2 lines of code in the session manager ( to check if vmRoute is set | and if so add it to the session id ). | | | | Costin | | | | -- | To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> | For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> | | | -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>