Author: pero
Date: Tue Apr 11 09:20:28 2006
New Revision: 393256

URL: http://svn.apache.org/viewcvs?rev=393256&view=rev
Log:
JvmRouteBinderValve now support also sessionid rewriting from request parameter 
jsessionid,
Add documentation for this valve to cluster-howto.xml. :-)

Modified:
    
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/JvmRouteBinderValve.java
    tomcat/container/tc5.5.x/webapps/docs/changelog.xml
    tomcat/container/tc5.5.x/webapps/docs/cluster-howto.xml

Modified: 
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/JvmRouteBinderValve.java
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/JvmRouteBinderValve.java?rev=393256&r1=393255&r2=393256&view=diff
==============================================================================
--- 
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/JvmRouteBinderValve.java
 (original)
+++ 
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/JvmRouteBinderValve.java
 Tue Apr 11 09:20:28 2006
@@ -45,12 +45,13 @@
  * Valve to handle Tomcat jvmRoute takeover using mod_jk module after node
  * failure. After a node crashed the next request going to other cluster node.
  * Now the answering from apache is slower ( make some error handshaking. Very
- * bad with apache at my windows.). We rewrite now the cookie jsessionid
+ * bad with apache at my windows.). We rewrite now the jsessionid
  * information to the backup cluster node. After the next response all client
  * request goes direct to the backup node. The change sessionid send also to 
all
  * other cluster nodes. Well, now the session stickyness work directly to the
  * backup node and traffic don't go back too restarted cluster nodes!
- * 
+ * As jsessionid was created by cookie, the change JSESSIONID cookie resend 
with next response.
+ *  
  * At all cluster node you must configure the as ClusterListener since 5.5.10
  * [EMAIL PROTECTED] 
org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener 
JvmRouteSessionIDBinderListener}
  * or before with
@@ -90,7 +91,7 @@
     /**
      * The descriptive information about this implementation.
      */
-    protected static final String info = 
"org.apache.catalina.cluster.session.JvmRouteBinderValve/1.2";
+    protected static final String info = 
"org.apache.catalina.cluster.session.JvmRouteBinderValve/1.3";
 
     /*--Instance Variables--------------------------------------*/
 
@@ -225,12 +226,7 @@
                     
log.warn(sm.getString("jvmRoute.missingJvmRouteAttribute"));
                 return;
             }
-            if (request.isRequestedSessionIdFromURL()) {
-                if (log.isDebugEnabled())
-                    log.debug(sm.getString("jvmRoute.skipURLSessionIDs"));
-            } else {
-                handleJvmRoute( request, response,session.getIdInternal(), 
jvmRoute);
-            }
+            handleJvmRoute( request, response,session.getIdInternal(), 
jvmRoute);
             if (log.isDebugEnabled()) {
                 long t2 = System.currentTimeMillis();
                 long time = t2 - t1;
@@ -352,7 +348,8 @@
         catalinaSession.setId(newSessionID);
         if (catalinaSession instanceof DeltaSession)
             ((DeltaSession) catalinaSession).resetDeltaRequest();
-        setNewSessionCookie(request, response,newSessionID);
+        if(request.isRequestedSessionIdFromCookie())
+            setNewSessionCookie(request, response,newSessionID);
         // set orginal sessionid at request, to allow application detect the
         // change
         if (sessionIdAttribute != null && !"".equals(sessionIdAttribute)) {

Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?rev=393256&r1=393255&r2=393256&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Tue Apr 11 09:20:28 2006
@@ -105,12 +105,19 @@
   </subsection>
   <subsection name="Cluster">
     <changelog>
+       <update>
+        Add JvmRouteBinderValve documentation at cluster-howto.xml. (pero)
+       </update>
+       <add>
+        JvmRouteBinderValve now supports now sessionid's from request and 
cookies.
+        Thanks to Brian Stansberry for reporting it. (pero)
+       </add>
        <fix>
        <bug>38779</bug> Fix wrong jmx message arg at SimpleTcpCluster
           at o.a.c.cluster.tcp.mbeans-descriptors.xml, submitted by Pawel 
Tucholski (pero)
       </fix>
       <fix>
-        Fix that after every Keep Alive Socket close a log warning is 
generated TcpReplicationThread (pero)
+        Fix that not after every "Keep Alive Socket close" a log warning is 
generated at TcpReplicationThread (pero)
       </fix>
       <fix>
         <bug>39178</bug>: Now ROOT.war deployment with FarmWarDeployer is 
possible (pero)

Modified: tomcat/container/tc5.5.x/webapps/docs/cluster-howto.xml
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/webapps/docs/cluster-howto.xml?rev=393256&r1=393255&r2=393256&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/cluster-howto.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/cluster-howto.xml Tue Apr 11 09:20:28 
2006
@@ -854,7 +854,8 @@
       autoConnect="true"
       maxPoolSocketLimit="10"
       keepAliveTimeout="-1"
-      keepAliveMaxRequestCount="10000"/&gt;
+      keepAliveMaxRequestCount="10000"
+      waitForAck="true" /&gt;
 </source>
 </p>  
 </section>
@@ -962,6 +963,51 @@
 With <em>Cluster.setProperty(&lt;String&gt;,&lt;String&gt;)</em> you can 
modify 
 attributes for all register managers. The method exists as MBeans operation.
 </p>
+</section>
+
+<section name="Bind session after crash to failover node">
+<p>
+As you configure more then two nodes at same cluster for backup, most 
loadbalancer
+send don't all your requests after failover to the same node.
+</p>
+<p> 
+The JvmRouteBinderValve handle tomcat jvmRoute takeover using mod_jk module 
after node
+failure. After a node crashed the next request going to other cluster node. 
The JvmRouteBinderValve 
+now detect the takeover and rewrite the jsessionid
+information to the backup cluster node. After the next response all client
+request goes direct to the backup node. The change sessionid send also to all
+other cluster nodes. Well, now the session stickyness work directly to the
+backup node, but traffic don't go back too restarted cluster nodes!<br/>
+As jsessionid was created by cookie, the change JSESSIONID cookie resend with 
next response.
+</p>
+<p>
+You must add JvmRouteBinderValve and the corresponding cluster message 
listener JvmRouteSessionIDBinderListener.
+As you add the new listener you must also add the default 
ClusterSessionListener that receiver the normal cluster messages.
+
+<source>
+&lt;Cluster className="org.apache.catalina.tcp.SimpleTcpCluster" &gt;
+...
+     &lt;Valve 
className="org.apache.catalina.cluster.session.JvmRouteBinderValve"
+               enabled="true" sessionIdAttribute="takeoverSessionid"/&gt;      
+     &lt;ClusterListener 
className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener" 
/&gt;
+     &lt;ClusterListener 
className="org.apache.catalina.cluster.session.ClusterSessionListener" /&gt;
+...
+&lt;Cluster&gt;
+</source>
+</p>
+<p>
+<b>Hint:</b><br/>
+With attribute <i>sessionIdAttribute</i> you can change the request attribute 
name that included the old session id.
+Default attribuite name is 
<i>org.apache.catalina.cluster.session.JvmRouteOrignalSessionID</i>.
+</p>
+<p>
+<b>Trick:</b><br/>
+You can enable this mod_jk turnover mode via JMX before you drop a node to all 
backup nodes!
+Set enable true on all JvmRouteBinderValve backups, disable worker at mod_jk 
+and then drop node and restart it! Then enable mod_jk Worker and disable 
JvmRouteBinderValves again. 
+This use case means that only requested session are migrated.
+</p>
+
 </section>
 
 </section>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to