1、测试环境 -- 两个tomcat:8080和8081端口
version: "3"
services:
tomcat8080:
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat8080
ports:
- "8080:8080"
volumes:
- "/usr/local/service/tomcat/tomcat8080:/usr/local/tomcat/webapps"
privileged: true
tomcat8081:
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat8081
ports:
- "8081:8080"
volumes:
- "/usr/local/service/tomcat/tomcat8081:/usr/local/tomcat/webapps"
privileged: true
2、测试环境 -- nginx转发
upstream myserver {
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=1;
}
server {
location / {
proxy_pass http://myserver;
}
}
3、测试环境 -- spring demo 项目:打印 sessionId
package com.vim.modules.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@RestController
@RequestMapping(value = "/session")
public class SessionController {
@RequestMapping(value = "/id")
public String session(HttpServletRequest request, HttpSession session){
return session.getId();
}
}
4、springboot 配置 session
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
spring.redis.host=10.10.1.127
spring.redis.port=6380
spring.redis.database=0
添加注解: @EnableRedisHttpSession
5、测试说明
1、测试java项目负责打印请求的sessionId
2、将该java项目部署到8080和8081端口启动的tomcat容器中
3、使用nginx负载均衡转发两个tomcat
4、没有使用spring session的时候,每次请求打印的sessionId不一样
5、使用spring session时,打印的sessionId开始一致