Return-Path: X-Original-To: apmail-tomcat-dev-archive@www.apache.org Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2877B71AF for ; Thu, 22 Sep 2011 18:01:56 +0000 (UTC) Received: (qmail 59880 invoked by uid 500); 22 Sep 2011 18:01:55 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 59796 invoked by uid 500); 22 Sep 2011 18:01:55 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 59785 invoked by uid 99); 22 Sep 2011 18:01:55 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 Sep 2011 18:01:55 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 Sep 2011 18:01:53 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id F3FC523888E4 for ; Thu, 22 Sep 2011 18:01:32 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1174289 - in /tomcat/jk/trunk: native/apache-1.3/ native/apache-2.0/ native/common/ native/iis/ xdocs/miscellaneous/ xdocs/reference/ Date: Thu, 22 Sep 2011 18:01:32 -0000 To: dev@tomcat.apache.org From: rjung@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20110922180132.F3FC523888E4@eris.apache.org> Author: rjung Date: Thu Sep 22 18:01:31 2011 New Revision: 1174289 URL: http://svn.apache.org/viewvc?rev=1174289&view=rev Log: - URI Map: Add "sticky_ignore" extension attributes to uri worker map. It allows to disable stickyness for individual mounts. - HTTPD: Allow dynamic disabling of stickyness using the environment variable JK_STICKY_IGNORE. This can be useful to break cookie stickyness for non-sticky requests like login forms. Modified: tomcat/jk/trunk/native/apache-1.3/mod_jk.c tomcat/jk/trunk/native/apache-2.0/mod_jk.c tomcat/jk/trunk/native/common/jk_lb_worker.c tomcat/jk/trunk/native/common/jk_service.h tomcat/jk/trunk/native/common/jk_status.c tomcat/jk/trunk/native/common/jk_uri_worker_map.c tomcat/jk/trunk/native/common/jk_uri_worker_map.h tomcat/jk/trunk/native/common/jk_util.c tomcat/jk/trunk/native/iis/jk_isapi_plugin.c tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml tomcat/jk/trunk/xdocs/reference/apache.xml tomcat/jk/trunk/xdocs/reference/uriworkermap.xml tomcat/jk/trunk/xdocs/reference/workers.xml Modified: tomcat/jk/trunk/native/apache-1.3/mod_jk.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/apache-1.3/mod_jk.c?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/native/apache-1.3/mod_jk.c (original) +++ tomcat/jk/trunk/native/apache-1.3/mod_jk.c Thu Sep 22 18:01:31 2011 @@ -79,6 +79,7 @@ #define JK_ENV_KEY_SIZE ("SSL_CIPHER_USEKEYSIZE") #define JK_ENV_CERTCHAIN_PREFIX ("SSL_CLIENT_CERT_CHAIN_") #define JK_ENV_REPLY_TIMEOUT ("JK_REPLY_TIMEOUT") +#define JK_ENV_STICKY_IGNORE ("JK_STICKY_IGNORE") #define JK_ENV_WORKER_NAME ("JK_WORKER_NAME") #define JK_NOTE_WORKER_NAME ("JK_WORKER_NAME") #define JK_NOTE_WORKER_TYPE ("JK_WORKER_TYPE") @@ -679,6 +680,7 @@ static int init_ws_service(apache_privat request_rec *r = private_data->r; char *ssl_temp = NULL; const char *reply_timeout = NULL; + const char *sticky_ignore = NULL; rule_extension_t *e; /* Copy in function pointers (which are really methods) */ @@ -726,6 +728,7 @@ static int init_ws_service(apache_privat e = (rule_extension_t *)ap_get_module_config(r->request_config, &jk_module); if (e) { s->extension.reply_timeout = e->reply_timeout; + s->extension.sticky_ignore = e->sticky_ignore; s->extension.use_server_error_pages = e->use_server_error_pages; if (e->activation) { s->extension.activation = ap_palloc(r->pool, e->activation_size * sizeof(int)); @@ -744,6 +747,22 @@ static int init_ws_service(apache_privat s->extension.reply_timeout = r; } + sticky_ignore = ap_table_get(r->subprocess_env, JK_ENV_STICKY_IGNORE); + if (sticky_ignore) { + if (*sticky_ignore == '\0') { + s->extension.reply_timeout = JK_TRUE; + } + else { + int r = atoi(sticky_ignore); + if (r) { + s->extension.reply_timeout = JK_TRUE; + } + else { + s->extension.reply_timeout = JK_FALSE; + } + } + } + if (conf->options & JK_OPT_DISABLEREUSE) s->disable_reuse = 1; Modified: tomcat/jk/trunk/native/apache-2.0/mod_jk.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/apache-2.0/mod_jk.c?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/native/apache-2.0/mod_jk.c (original) +++ tomcat/jk/trunk/native/apache-2.0/mod_jk.c Thu Sep 22 18:01:31 2011 @@ -114,6 +114,7 @@ #define JK_ENV_KEY_SIZE ("SSL_CIPHER_USEKEYSIZE") #define JK_ENV_CERTCHAIN_PREFIX ("SSL_CLIENT_CERT_CHAIN_") #define JK_ENV_REPLY_TIMEOUT ("JK_REPLY_TIMEOUT") +#define JK_ENV_STICKY_IGNORE ("JK_STICKY_IGNORE") #define JK_ENV_WORKER_NAME ("JK_WORKER_NAME") #define JK_NOTE_WORKER_NAME ("JK_WORKER_NAME") #define JK_NOTE_WORKER_TYPE ("JK_WORKER_TYPE") @@ -734,6 +735,7 @@ static int init_ws_service(apache_privat request_rec *r = private_data->r; char *ssl_temp = NULL; const char *reply_timeout = NULL; + const char *sticky_ignore = NULL; rule_extension_t *e; /* Copy in function pointers (which are really methods) */ @@ -780,6 +782,7 @@ static int init_ws_service(apache_privat e = (rule_extension_t *)ap_get_module_config(r->request_config, &jk_module); if (e) { s->extension.reply_timeout = e->reply_timeout; + s->extension.sticky_ignore = e->sticky_ignore; s->extension.use_server_error_pages = e->use_server_error_pages; if (e->activation) { s->extension.activation = apr_palloc(r->pool, e->activation_size * sizeof(int)); @@ -798,6 +801,22 @@ static int init_ws_service(apache_privat s->extension.reply_timeout = r; } + sticky_ignore = apr_table_get(r->subprocess_env, JK_ENV_STICKY_IGNORE); + if (sticky_ignore) { + if (*sticky_ignore == '\0') { + s->extension.reply_timeout = JK_TRUE; + } + else { + int r = atoi(sticky_ignore); + if (r) { + s->extension.reply_timeout = JK_TRUE; + } + else { + s->extension.reply_timeout = JK_FALSE; + } + } + } + if (conf->options & JK_OPT_DISABLEREUSE) s->disable_reuse = 1; Modified: tomcat/jk/trunk/native/common/jk_lb_worker.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_lb_worker.c?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/native/common/jk_lb_worker.c (original) +++ tomcat/jk/trunk/native/common/jk_lb_worker.c Thu Sep 22 18:01:31 2011 @@ -1118,9 +1118,9 @@ static int JK_METHOD service(jk_endpoint jk_b_reset(s->reco_buf); s->reco_status = RECO_INITED; - if (p->worker->sticky_session) { + if (p->worker->sticky_session && s->extension.sticky_ignore != JK_TRUE) { /* Use sessionid only if sticky_session is - * defined for this load balancer + * defined and not overwritten for this load balancer */ sessionid = get_sessionid(s, p->worker, l); } Modified: tomcat/jk/trunk/native/common/jk_service.h URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_service.h?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/native/common/jk_service.h (original) +++ tomcat/jk/trunk/native/common/jk_service.h Thu Sep 22 18:01:31 2011 @@ -82,6 +82,8 @@ struct svc_extension { /* reply_timeout overwrite */ int reply_timeout; + /* Whether to ignore session routing info */ + int sticky_ignore; /* activation state overwrites for load balancers */ /* Dynamically allocated array with one entry per lb member. */ int *activation; Modified: tomcat/jk/trunk/native/common/jk_status.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_status.c?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/native/common/jk_status.c (original) +++ tomcat/jk/trunk/native/common/jk_status.c Thu Sep 22 18:01:31 2011 @@ -231,10 +231,10 @@ #define JK_STATUS_FORM_START "
\n" #define JK_STATUS_FORM_HIDDEN_INT "\n" #define JK_STATUS_FORM_HIDDEN_STRING "\n" -#define JK_STATUS_URI_MAP_TABLE_HEAD "%s%s%s%s%s%s%s%s%s\n" -#define JK_STATUS_URI_MAP_TABLE_ROW "%s%s%s%d%s%s%s%s%d\n" -#define JK_STATUS_URI_MAP_TABLE_HEAD2 "%s%s%s%s%s%s%s%s%s%s\n" -#define JK_STATUS_URI_MAP_TABLE_ROW2 "%s%s%s%s%d%s%s%s%s%d\n" +#define JK_STATUS_URI_MAP_TABLE_HEAD "%s%s%s%s%s%s%s%s%s%s\n" +#define JK_STATUS_URI_MAP_TABLE_ROW "%s%s%s%d%d%s%s%s%s%d\n" +#define JK_STATUS_URI_MAP_TABLE_HEAD2 "%s%s%s%s%s%s%s%s%s%s%s\n" +#define JK_STATUS_URI_MAP_TABLE_ROW2 "%s%s%s%s%d%d%s%s%s%s%d\n" #define JK_STATUS_SHOW_AJP_CONF_HEAD "" \ "Type" \ "" JK_STATUS_ARG_AJP_TEXT_HOST_STR "" \ @@ -1549,6 +1549,7 @@ static void display_map(jk_ws_service_t uri_worker_map_get_match(uwr, buf, l), uri_worker_map_get_source(uwr, l), uwr->extensions.reply_timeout, + uwr->extensions.sticky_ignore, uwr->extensions.fail_on_status_str ? uwr->extensions.fail_on_status_str : "-", uwr->extensions.active ? uwr->extensions.active : "-", uwr->extensions.disabled ? uwr->extensions.disabled : "-", @@ -1560,6 +1561,7 @@ static void display_map(jk_ws_service_t uri_worker_map_get_match(uwr, buf, l), uri_worker_map_get_source(uwr, l), uwr->extensions.reply_timeout, + uwr->extensions.sticky_ignore, uwr->extensions.fail_on_status_str ? uwr->extensions.fail_on_status_str : "-", uwr->extensions.active ? uwr->extensions.active : "-", uwr->extensions.disabled ? uwr->extensions.disabled : "-", @@ -1575,6 +1577,7 @@ static void display_map(jk_ws_service_t jk_print_xml_att_string(s, 8, "type", uri_worker_map_get_match(uwr, buf, l)); jk_print_xml_att_string(s, 8, "source", uri_worker_map_get_source(uwr, l)); jk_print_xml_att_int(s, 8, "reply_timeout", uwr->extensions.reply_timeout); + jk_print_xml_att_int(s, 8, "sticky_ignore", uwr->extensions.sticky_ignore); jk_print_xml_att_string(s, 8, "fail_on_status", uwr->extensions.fail_on_status_str); jk_print_xml_att_string(s, 8, "active", uwr->extensions.active); jk_print_xml_att_string(s, 8, "disabled", uwr->extensions.disabled); @@ -1591,6 +1594,7 @@ static void display_map(jk_ws_service_t jk_printf(s, " type=\"%s\"", uri_worker_map_get_match(uwr, buf, l)); jk_printf(s, " source=\"%s\"", uri_worker_map_get_source(uwr, l)); jk_printf(s, " reply_timeout=\"%d\"", uwr->extensions.reply_timeout); + jk_printf(s, " sticky_ignore=\"%d\"", uwr->extensions.sticky_ignore); jk_printf(s, " fail_on_status=\"%s\"", uwr->extensions.fail_on_status_str ? uwr->extensions.fail_on_status_str : ""); jk_printf(s, " active=\"%s\"", uwr->extensions.active ? uwr->extensions.active : ""); jk_printf(s, " disabled=\"%s\"", uwr->extensions.disabled ? uwr->extensions.disabled : ""); @@ -1605,6 +1609,7 @@ static void display_map(jk_ws_service_t jk_print_prop_item_string(s, w, worker, "map", count, "type", uri_worker_map_get_match(uwr, buf, l)); jk_print_prop_item_string(s, w, worker, "map", count, "source", uri_worker_map_get_source(uwr, l)); jk_print_prop_item_int(s, w, worker, "map", count, "reply_timeout", uwr->extensions.reply_timeout); + jk_print_prop_item_int(s, w, worker, "map", count, "sticky_ignore", uwr->extensions.sticky_ignore); jk_print_prop_item_string(s, w, worker, "map", count, "fail_on_status", uwr->extensions.fail_on_status_str); jk_print_prop_item_string(s, w, worker, "map", count, "active", uwr->extensions.active); jk_print_prop_item_string(s, w, worker, "map", count, "disabled", uwr->extensions.disabled); @@ -1659,10 +1664,10 @@ static void display_maps(jk_ws_service_t jk_puts(s, "]\n"); if (has_server_iterator) jk_printf(s, JK_STATUS_URI_MAP_TABLE_HEAD2, - "Server", "URI", "Match Type", "Source", "Reply Timeout", "Fail on Status", "Active", "Disabled", "Stopped", "Use Server Errors"); + "Server", "URI", "Match Type", "Source", "Reply Timeout", "Sticky Ignore", "Fail on Status", "Active", "Disabled", "Stopped", "Use Server Errors"); else jk_printf(s, JK_STATUS_URI_MAP_TABLE_HEAD, - "URI", "Match Type", "Source", "Reply Timeout", "Fail on Status", "Active", "Disabled", "Stopped", "Use Server Errors"); + "URI", "Match Type", "Source", "Reply Timeout", "Sticky Ignore", "Fail on Status", "Active", "Disabled", "Stopped", "Use Server Errors"); } count = 0; if (has_server_iterator) { Modified: tomcat/jk/trunk/native/common/jk_uri_worker_map.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_uri_worker_map.c?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/native/common/jk_uri_worker_map.c (original) +++ tomcat/jk/trunk/native/common/jk_uri_worker_map.c Thu Sep 22 18:01:31 2011 @@ -40,6 +40,7 @@ #endif #define JK_UWMAP_EXTENSION_REPLY_TIMEOUT "reply_timeout=" +#define JK_UWMAP_EXTENSION_STICKY_IGNORE "sticky_ignore=" #define JK_UWMAP_EXTENSION_ACTIVE "active=" #define JK_UWMAP_EXTENSION_DISABLED "disabled=" #define JK_UWMAP_EXTENSION_STOPPED "stopped=" @@ -637,6 +638,7 @@ int uri_worker_map_add(jk_uri_worker_map w = jk_pool_strdup(p, worker); uwr->extensions.reply_timeout = -1; + uwr->extensions.sticky_ignore = JK_FALSE; uwr->extensions.active = NULL; uwr->extensions.disabled = NULL; uwr->extensions.stopped = NULL; @@ -661,6 +663,15 @@ int uri_worker_map_add(jk_uri_worker_map if (!strncmp(param, JK_UWMAP_EXTENSION_REPLY_TIMEOUT, strlen(JK_UWMAP_EXTENSION_REPLY_TIMEOUT))) { uwr->extensions.reply_timeout = atoi(param + strlen(JK_UWMAP_EXTENSION_REPLY_TIMEOUT)); } + else if (!strncmp(param, JK_UWMAP_EXTENSION_STICKY_IGNORE, strlen(JK_UWMAP_EXTENSION_STICKY_IGNORE))) { + int val = atoi(param + strlen(JK_UWMAP_EXTENSION_STICKY_IGNORE)); + if (val) { + uwr->extensions.sticky_ignore = JK_TRUE; + } + else { + uwr->extensions.sticky_ignore = JK_FALSE; + } + } else if (!strncmp(param, JK_UWMAP_EXTENSION_USE_SRV_ERRORS, strlen(JK_UWMAP_EXTENSION_USE_SRV_ERRORS))) { uwr->extensions.use_server_error_pages = atoi(param + strlen(JK_UWMAP_EXTENSION_USE_SRV_ERRORS)); } Modified: tomcat/jk/trunk/native/common/jk_uri_worker_map.h URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_uri_worker_map.h?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/native/common/jk_uri_worker_map.h (original) +++ tomcat/jk/trunk/native/common/jk_uri_worker_map.h Thu Sep 22 18:01:31 2011 @@ -73,6 +73,8 @@ struct rule_extension { /* reply_timeout overwrite */ int reply_timeout; + /* Whether to ignore session routing info */ + int sticky_ignore; /* activation state overwrites for load balancers */ /* Number of elements in the array activations. */ int activation_size; Modified: tomcat/jk/trunk/native/common/jk_util.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_util.c?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/native/common/jk_util.c (original) +++ tomcat/jk/trunk/native/common/jk_util.c Thu Sep 22 18:01:31 2011 @@ -2075,6 +2075,7 @@ void jk_init_ws_service(jk_ws_service_t s->flush_packets = JK_FALSE; s->flush_header = JK_FALSE; s->extension.reply_timeout = -1; + s->extension.sticky_ignore = JK_FALSE; s->extension.use_server_error_pages = 0; s->extension.activation = NULL; s->extension.fail_on_status_size = 0; Modified: tomcat/jk/trunk/native/iis/jk_isapi_plugin.c URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/iis/jk_isapi_plugin.c?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/native/iis/jk_isapi_plugin.c (original) +++ tomcat/jk/trunk/native/iis/jk_isapi_plugin.c Thu Sep 22 18:01:31 2011 @@ -3084,6 +3084,7 @@ static int init_ws_service(isapi_private if (JK_IS_DEBUG_LEVEL(logger)) jk_log(logger, JK_LOG_DEBUG, "Applying service extensions" ); s->extension.reply_timeout = e->reply_timeout; + s->extension.sticky_ignore = e->sticky_ignore; s->extension.use_server_error_pages = e->use_server_error_pages; if (e->activation) { s->extension.activation = jk_pool_alloc(s->pool, e->activation_size * sizeof(int)); Modified: tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml (original) +++ tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml Thu Sep 22 18:01:31 2011 @@ -40,6 +40,22 @@ new documentation project for JK was started.

+
+
+ + + + URI Map: Add "sticky_ignore" extension attributes to uri worker map. + It allows to disable stickyness for individual mounts. (rjung) + + + HTTPD: Allow dynamic disabling of stickyness using the environment + variable JK_STICKY_IGNORE. This can be useful to break cookie stickyness + for non-sticky requests like login forms. (rjung) + + + +

Modified: tomcat/jk/trunk/xdocs/reference/apache.xml URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/xdocs/reference/apache.xml?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/xdocs/reference/apache.xml (original) +++ tomcat/jk/trunk/xdocs/reference/apache.xml Thu Sep 22 18:01:31 2011 @@ -1120,6 +1120,24 @@ for more complex rules to change the to request properties like e.g. the request URI. This is available since version 1.2.27.

+

+The environment variable +JK_IGNORE_STICKY can be set to disable session stickyness +for individual requests. If the variable is set to an empty string +or a nonzero number, session stickyness will be disabled. Setting +it to 0 will reset to the behaviour defined by the worker +configuration. +This is available since version 1.2.33. +

+

+This feature can be useful to optimize load balancing when using +cookie based session stickyness. In this case, as long as she keeps +her browser open, any request by a user who started a session will +be send to the same Tomcat instance, even if he left the part of +the application which uses the session. You can for instance +set this environment variable when a user requests a login form +to ensure, that this initial session request is balanced non-sticky. +

Modified: tomcat/jk/trunk/xdocs/reference/uriworkermap.xml URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/xdocs/reference/uriworkermap.xml?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/xdocs/reference/uriworkermap.xml (original) +++ tomcat/jk/trunk/xdocs/reference/uriworkermap.xml Thu Sep 22 18:01:31 2011 @@ -246,6 +246,27 @@ For a general description of reply timeo timeouts documentation.

+ +
+

+The extension sticky_ignore can disable session stickyness for a single mapping rule. + + # Disable session stickyness + # only for this mapping. + /myapp/loginform.jsp=myworker;sticky_ignore=1 + +This extension can be useful to optimize load balancing when using +cookie based session stickyness. In this case, as long as she keeps +her browser open, any request by a user who started a session will +be send to the same Tomcat instance, even if he left the part of +the application which uses the session. You can for instance +set this environment variable when a user requests a login form +to ensure, that this initial session request is balanced non-sticky. +

+

+This extension is available since version 1.2.33. +

+

Modified: tomcat/jk/trunk/xdocs/reference/workers.xml URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/xdocs/reference/workers.xml?rev=1174289&r1=1174288&r2=1174289&view=diff ============================================================================== --- tomcat/jk/trunk/xdocs/reference/workers.xml (original) +++ tomcat/jk/trunk/xdocs/reference/workers.xml Thu Sep 22 18:01:31 2011 @@ -503,6 +503,11 @@ Tomcat worker. If sticky_session is set sticky_session is set to False. Set sticky_session to False when Tomcat is using a Session Manager which can persist session data across multiple instances of Tomcat. +

+The sticky_session setting can be overwritten using the Apache httpd +environment variable JK_STICKY_IGNORE and the worker map extension for +sticky_ignore. This has been added in version 1.2.33. +

--------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org