tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benoit Derouet" <bdero...@calendra.com>
Subject [PATCH Suggestion] Tomcat 3.2.x adapter in load balancing using URL
Date Thu, 05 Apr 2001 15:46:56 GMT

Hi, 

The load balancer worker fail to handle load balancing if the
application use sticky session managed by URL.
The load balancer look for a the parameter "jsessionid" in the URL, and
then can find the worker to contact for the request.
First, the JK_PATH_SESSION_IDENTIFIER in jk_global.h is set to
";jsessionid", but this should be set to "jsessionid".

In jk_lb_worker.c, the function "get_path_param" should return a the
parameter with a given name, but this function look in the URI
(jk_ws_service_t->req_uri), and not in the parameters
(jk_ws_service_t->query_string).
So this function always return NULL.

So here is a suggestion for the "get_path_param" function : 

static char *get_path_param(jk_ws_service_t *s,
                            const char *name,
                            jk_logger_t *l)
{

    char *id_start = NULL;

	if(s->query_string) {

		for(id_start = strstr(s->query_string, name) ; 
			id_start ; 
			id_start = strstr(id_start + 1, name)) {
			if('=' == id_start[strlen(name)]) {
				/*
				 * Session path-cookie was found, get
it's value
				 */
				id_start += (1 + strlen(name));
				if(strlen(id_start)) {
					char *id_end;
					id_start =
jk_pool_strdup(s->pool, id_start);
					/* 
					 * The query string is not part
of req_uri, however
					 * to be on the safe side lets
remove the trailing query 
					 * string if appended...
					 */
					if(id_end = strchr(id_start,
'?')) { 
						*id_end = '\0';
					}
					return id_start;
				}
			}
		}
	}
  
    return NULL;
}

and the JK_PATH_SESSION_IDENTIFIER must be change to "jsessionid" in
jk_global.h.

With those two changes, it works fine. I test it on Windows 2000 with
iis and Tomcat 3.2.1.

regards

Benoit.




Mime
View raw message