我找到了满足我们需求的解决方法。
我在平衡器 ( BALANCER_SESSION_ID_HEADER_NAME
) 上配置不同的粘性会话属性,并在客户端管理平衡器粘性会话持续时间。
第一次,我设置counter + JSESSIONID
为BALANCER_SESSION_ID_HEADER_NAME
. 每次STICKY_SESSION_TIMEOUT
花费时,我都设置++counter + JSESSIONID
为BALANCER_SESSION_ID_HEADER_NAME
.
客户端代码:
if (USE_STICKY_SESSION_TIMEOUT && this.getjSessionId() != null) {
if (this.getLastResponseTime() != 0
&& new Date().getTime() - this.getLastResponseTime() > STICKY_SESSION_TIMEOUT) {
balancerSubsessionCounter++;
}
final String cookie = BALANCER_SESSION_ID_HEADER_NAME + "=" + balancerSubsessionCounter + "-"
+ this.getjSessionId();
this.addCookie(httpPost, cookie);
}
//invoke service
if (USE_STICKY_SESSION_TIMEOUT) {
this.setLastResponseTime(new Date().getTime());
}