上一节,我们讲到使用tomcat+nginx+redis实现session的共享,如果对上一节不是很了解,欢迎订阅我的头条号:一点热,然后阅读之前的文章。
上一章节的项目已经放到github里面。
https://github.com/yeehot/tomcat_redis_nginx_session
上一节我们使用tomcat+redis+nginx来实现session共享,但是,大家可能会注意到,需要我们在tomcat客户端配置相应的Redis项,而且还需要把相应的包放到tomcat里面,那么这个很大程度上限制了服务器只能使用tomcat来实现session共享,那么为了解决服务器只能使用tomcat的问题,我这里使用spring session+redis 来解决问题。
试验环境:
Ubuntu系统
Nginx:实现负载均衡
tomcat:后端服务器
redis:session同步
springmvc:java项目,Yeehot-Program-King
VM:两台虚拟机:VM1:192.168.3.4,VM2:192.168.3.5
Nginx部署在192.168.3.5
spring mvc项目需要用到的包:
spring-session,spring-data-redis和jedis
1、创建spring MVC的maven项目,配置好相应的启动项,关于有人不知道怎么使用maven,这个其实如果不会,可以使用gradle或者直接下载相应的包也行的,不一定用maven。
在maven的pom.xml里面添加三个库spring-session,spring-data-redis和jedis
2、在applicationContext.xml添加redis客户端连接配置信息。由于我的配置里面使用无密码的,所以直接就IP和端口了。
3、在web.xml添加过滤规则
springSessionRepositoryFilter
4、编写controller
这里主要就是打印本机的IP和session ID,查看不同的服务器的sessionID是否发生变化
package com.yeehot.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class InfoController {
@RequestMapping(value = "/yeehotsession",produces ="application/json; charset=utf-8")
@ResponseBody
public String inputsession( String username,HttpServletRequest request){
HttpSession session=request.getSession();
String localip= request.getLocalAddr();
String resutl="本机IP:"+localip+" 当前session id"+session.getId();
return resutl;
}
}
5、Nginx负载均衡的配置
这里可以移步到之前写的负载均衡的文章
6、redis的安装与启动
可以看我的上一节的文章,头条号:一点热
6、测试结果
我这里nginx安装在VM2:192.168.3.5,然后输入
http://192.168.3.5/Yeehot-Program-King/yeehotsession,可以看到两台机器的IP和session ID
由上图看到,不同的IP返回的sessionId都是一样的说明redis起到保存session的作用了。实现了session的共享。
今天的课程讲到这里,欢迎继续关注我的头条号:一点热,转载到其它网站请与我联系。欢迎收藏与转发。
下一节更加精彩。