Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf Tomcat 6群集-经过身份验证的会话复制_Jsf_Tomcat_Cluster Computing_Mod Proxy_Session Replication - Fatal编程技术网

Jsf Tomcat 6群集-经过身份验证的会话复制

Jsf Tomcat 6群集-经过身份验证的会话复制,jsf,tomcat,cluster-computing,mod-proxy,session-replication,Jsf,Tomcat,Cluster Computing,Mod Proxy,Session Replication,我目前有一个非常基本的集群,它由两个Tomcat 6.0.32实例(Tomcat1和Tomcat2)组成,运行在相同的VPS上。我通过Apache使用mod_proxy_ajp和mod_proxy_平衡器作为负载平衡器(在相同的VPS上)。 我们使用基本表单身份验证(通过j_安全检查)为用户创建经过身份验证的会话 负载平衡器工作正常,未经验证的会话正在两个实例之间成功复制。但是,我无法在每个实例之间替换经过身份验证的会话 我正在使用一个名为session.JSP的非常基本的JSP(基于JPS模板

我目前有一个非常基本的集群,它由两个Tomcat 6.0.32实例(Tomcat1Tomcat2)组成,运行在相同的VPS上。我通过Apache使用mod_proxy_ajp和mod_proxy_平衡器作为负载平衡器(在相同的VPS上)。 我们使用基本表单身份验证(通过j_安全检查)为用户创建经过身份验证的会话

负载平衡器工作正常,未经验证的会话正在两个实例之间成功复制。但是,我无法在每个实例之间替换经过身份验证的会话

我正在使用一个名为session.JSP的非常基本的JSP(基于JPS模板)来测试会话,看看它是否是一个新会话,并打印出JSSessionID。我在保护区内有一个JSP副本,在保护区外有一个JSP副本

我已经运行了以下测试:

测试1)
我在应用程序保护区之外的Tomcat1上访问session.jsp,记下JSESSIONID,并与负载平衡器确认Tomcat1处理了请求。然后我关闭Tomcat1并刷新页面。请求现在由Tomcat2处理(由负载平衡器确认)。当页面加载完成时,我看到了我的原始JSESSIONID,我的会话也保存了下来

测试2)
我在Tomcat1上访问应用程序保护区内的session.jsp。这会提示我登录。登录后,我被发送到session.jsp,记下我的JSESSIONID,并与负载平衡器确认,而不是Tomcat1处理了请求。然后我关闭Tomcat1并刷新页面。请求现在由Tomcat2处理(由负载平衡器确认)。当页面加载时,我检查我的cookie。我现在有了一个新的JSESSIONID,系统再次提示我登录


到目前为止,我认为经过身份验证的会话不会像未经身份验证的会话那样被复制。这是一个很好的原因,还是它指向了配置问题?

您没有在sticky_会话模式下运行,可以使用worker.loadbalancer.sticky_会话=1启用它


更好的检查:

据我所知,worker.loadbalancer是一个mod_jk设置。由于我们使用的是mod_代理,我认为这与此无关。粘性会话在mod_proxy中启用,并且正在工作。问题是在Tomcat实例之间复制经过身份验证的会话。