Are you going to port this to jk2 :-) ? One issue: I'm not sure JavaGroup is doing the synchronous(?) replication of session data - there is a delay between a change is made on one worker and the moment this is known on all other workers.
If you don't route back to the same worker - you'll loose data. If the original worker doesn't respond - you can send to a different worker in the group. Costin [EMAIL PROTECTED] wrote: > glenn 2003/01/02 09:12:55 > > Modified: jk/native CHANGES.txt > jk/native/common jk_lb_worker.c jk_util.c jk_util.h > jk/xdocs/jk workershowto.xml > Log: > Add new lb property sticky_session. If set to 0, requests with session > id's do not have to be routed back to the same Tomcat worker. This is > to support the new Tomcat Session Manager code which supports > persistance of session data across multiple Tomcat instances, such as > JavaGroup's. > > Revision Changes Path > 1.9 +4 -1 jakarta-tomcat-connectors/jk/native/CHANGES.txt > > Index: CHANGES.txt > =================================================================== > RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/CHANGES.txt,v > retrieving revision 1.8 > retrieving revision 1.9 > diff -u -r1.8 -r1.9 > --- CHANGES.txt 2 Jan 2003 13:00:59 -0000 1.8 > +++ CHANGES.txt 2 Jan 2003 17:12:55 -0000 1.9 > @@ -6,6 +6,9 @@ > [glenn] > * Apache 2/1.3, if Tomcat returns an error but not content, > let Apache handle processing the error returned by Tomcat. > + * Added the load balancer sticky_session property. If set to 0 > + requests with servlet SESSION ID's can be routed to any Tomcat > + worker. Default is 1, sessions are sticky. > > Changes with JK 1.2.2: > * tomcat_trend.pl updated script to support changed logging of > > > > 1.12 +9 -3 > jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c > > Index: jk_lb_worker.c > =================================================================== > RCS file: > /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v > retrieving revision 1.11 retrieving revision 1.12 > diff -u -r1.11 -r1.12 > --- jk_lb_worker.c 30 Oct 2002 21:17:34 -0000 1.11 > +++ jk_lb_worker.c 2 Jan 2003 17:12:55 -0000 1.12 > @@ -103,6 +103,7 @@ > jk_worker_t worker; > int in_local_worker_mode; > int local_worker_only; > + int sticky_session; > }; > typedef struct lb_worker lb_worker_t; > > @@ -254,8 +255,12 @@ > worker_record_t *rc = NULL; > double lb_min = 0.0; > unsigned i; > - char *session_route = get_session_route(s); > - > + char *session_route = NULL; > + > + if (p->sticky_session) { > + session_route = get_session_route(s); > + } > + > if(session_route) { > for(i = 0 ; i < p->num_of_workers ; i++) { > if(0 == strcmp(session_route, p->lb_workers[i].name)) { > @@ -421,6 +426,7 @@ > unsigned num_of_workers; > p->in_local_worker_mode = JK_FALSE; > p->local_worker_only = jk_get_local_worker_only_flag(props, > p->name); > + p->sticky_session = jk_get_is_sticky_session(props, p->name); > > if(jk_get_lb_worker_list(props, > p->name, > > > > 1.19 +15 -1 > jakarta-tomcat-connectors/jk/native/common/jk_util.c > > Index: jk_util.c > =================================================================== > RCS file: > /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.c,v > retrieving revision 1.18 retrieving revision 1.19 > diff -u -r1.18 -r1.19 > --- jk_util.c 16 Sep 2002 08:26:46 -0000 1.18 > +++ jk_util.c 2 Jan 2003 17:12:55 -0000 1.19 > @@ -89,6 +89,7 @@ > #define SOCKET_KEEPALIVE_OF_WORKER ("socket_keepalive") > #define LOAD_FACTOR_OF_WORKER ("lbfactor") > #define BALANCED_WORKERS ("balanced_workers") > +#define STICKY_SESSION ("sticky_session") > #define LOCAL_WORKER_ONLY_FLAG ("local_worker_only") > #define LOCAL_WORKER_FLAG ("local_worker") > #define WORKER_AJP12 ("ajp12") > @@ -499,6 +500,19 @@ > sprintf(buf, "%s.%s.%s", PREFIX_OF_WORKER, wname, > LOAD_FACTOR_OF_WORKER); > > return map_get_double(m, buf, DEFAULT_LB_FACTOR); > +} > + > +int jk_get_is_sticky_session(jk_map_t *m, > + const char *wname) { > + int rc = JK_TRUE; > + char buf[1024]; > + if (m && wname) { > + int value; > + sprintf(buf, "%s.%s.%s", PREFIX_OF_WORKER, wname, > STICKY_SESSION); > + value = map_get_int(m, buf, 0); > + if (!value) rc = JK_FALSE; > + } > + return rc; > } > > int jk_get_is_local_worker(jk_map_t *m, > > > > 1.9 +4 -1 > jakarta-tomcat-connectors/jk/native/common/jk_util.h > > Index: jk_util.h > =================================================================== > RCS file: > /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.h,v > retrieving revision 1.8 retrieving revision 1.9 > diff -u -r1.8 -r1.9 > --- jk_util.h 16 Sep 2002 08:26:46 -0000 1.8 > +++ jk_util.h 2 Jan 2003 17:12:55 -0000 1.9 > @@ -134,6 +134,9 @@ > double jk_get_lb_factor(jk_map_t *m, > const char *wname); > > +int jk_get_is_sticky_session(jk_map_t *m, > + const char *wname); > + > int jk_get_is_local_worker(jk_map_t *m, > const char *wname); > > > > > 1.10 +8 -5 > jakarta-tomcat-connectors/jk/xdocs/jk/workershowto.xml > > Index: workershowto.xml > =================================================================== > RCS file: > /home/cvs/jakarta-tomcat-connectors/jk/xdocs/jk/workershowto.xml,v > retrieving revision 1.9 retrieving revision 1.10 > diff -u -r1.9 -r1.10 > --- workershowto.xml 26 Nov 2002 16:08:48 -0000 1.9 > +++ workershowto.xml 2 Jan 2003 17:12:55 -0000 1.10 > @@ -300,11 +300,14 @@ > <p> > The overall result is that workers managed by the same lb worker are > load-balanced (based on their lbfactor and current user session) and > also fall-backed so a single Tomcat process death will not "kill" the > entire site. The following table specifies properties that the lb > worker can accept: > -</p> > - > -<p> > -<b>balanced_workers</b> is a comma separated list of workers that the > load balancer need to manage. -These workers should not appear in the > worker.list property. +<ul> > +<li><b>balanced_workers</b> is a comma separated list of workers that > the load balancer need to manage. +These workers should not appear in > the worker.list property.</li> +<li><b>sticky_session</b> specifies > whether requests with SESSION ID's should be routed back to the same > +Tomcat worker. If sticky_session is an int and is not 0 it is set to > JK_TRUE and sessions are sticky, otherwise +sticky_session is set to > false. Set sticky_session to JK_FALSE when Tomcat is using a Session > Manager which +can persist session data across multiple instances of > Tomcat. By default sticky_session is set to JK_TRUE.</li> +</ul> > </p> > > <screen> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>