Session 使用Tomcat会话重新连接客户端请求

Session 使用Tomcat会话重新连接客户端请求,session,tomcat,jmeter,sessionid,Session,Tomcat,Jmeter,Sessionid,我有通过负载平衡器启动的客户端请求,这些请求被路由到权重最小的Tomcat服务器进行处理 当客户端点击目标Tomcat服务器时,对客户端的响应包含用于第二个请求的绝对URL。 这从本质上消除了负载平衡器,允许客户端在客户端会话的生命周期内直接与Tomcat实例通信 问题: 问题在于,通过负载平衡器的第一个请求正在创建会话,然后直接发送给Tomcat的第二个请求为单个客户端创建第二个会话。第一个会话未使用,最终将过期 问题: 如何将第二个请求中的客户端连接回第一个请求中创建的会话(通过负载平衡器)

我有通过负载平衡器启动的客户端请求,这些请求被路由到权重最小的Tomcat服务器进行处理

当客户端点击目标Tomcat服务器时,对客户端的响应包含用于第二个请求的绝对URL。 这从本质上消除了负载平衡器,允许客户端在客户端会话的生命周期内直接与Tomcat实例通信

问题: 问题在于,通过负载平衡器的第一个请求正在创建会话,然后直接发送给Tomcat的第二个请求为单个客户端创建第二个会话。第一个会话未使用,最终将过期

问题: 如何将第二个请求中的客户端连接回第一个请求中创建的会话(通过负载平衡器)

更新: 我在JMeter中测试了这一点,但没有任何连接会话的运气

请求一:

http://loadbalancer:80/page1.jsp
响应标题:

Set-Cookie: JSESSIONID=070894D435A46DF60AFE506018018325; Path=/
那么第二个请求是:

http://directTomcat:8080/page2.jsp?token1=123&token2=xyz;JSESSIONID=070894D435A46DF60AFE506018018325

[no cookies]
第二个响应头:

Set-Cookie: JSESSIONID=1081A016CBA9B3AA7E7C38EF775C04F7; Path=/
我还尝试:

http://directTomcat:8080/page2.jsp?token1=123&token2=xyz&JSESSIONID=070894D435A46DF60AFE506018018325
但这也不起作用


在发出第二个请求之前,是否有必要在客户端上将JSESSIONID设置为cookie?

在Java代码中,您是否可以控制负载平衡器发出的请求返回的绝对URL?如果是这样,你可以附加;JSSessionID=[sessionid]到结尾。Martin我确实这样做了,我用我为本期所做的测试更新了我的原始问题。在附加jessionid时,是否包含分号?忽略这一点-只是注意到你做了。是的,对不起。实际上,我花了相当多的时间在这方面,Jmeter试图模拟这一点,但没有任何运气,即使我似乎有一个相当好的Jmeter脚本来测试。你做错了。您应该让会话粘性发挥作用,而不是所有这些胡说八道。