说明:在使用Nginx进行反向代理的时候会发现,每当代理到不一样的Tomcat的时候,实际上不一样的Tomcat都会各自维护本身的Session数据信息,这样就有可能出现一种状况,经过Nginx访问转移到了A主机上设置了session属性,第二次访问的时候因为经过Nginx转移到了B主机上,因而就没法发现以前设置的session属性。解决这一问题有三种方式:nginx解决,tomcat解决,程序解决。开发的时候用的是程序解决即SpringSession。java
1.若是想要使用SpringSession技术,则首先要导入相应依赖包nginx
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>2.1.7.RELEASE</version> </dependency>
2.既然整个的项目都是围绕着Redis展开的,那么必定要在项目里面配置好Redis的环境属性以及SpringDataRedis配置类,同时还须要追加有一个SpringSession配置类。web
package com.yootk.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration;
@Configuration
@EnableRedisHttpSession // 与Redis自动整合
public class SpringSessionConfig {
@Bean
public RedisHttpSessionConfiguration getRedisHttpSessionConfiguration() {
RedisHttpSessionConfiguration configuration = new RedisHttpSessionConfiguration() ;
return configuration ;
}
}
3.修改web.xml配置文件,追加一个过滤器,这样才能够使用SpringSession统一管理。redis
<!-- 五、追加SpringSession的过滤器配置,设置session生效路径 --> <filter> <filter-name>springSessionRepositoryFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSessionRepositoryFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
此时的名称必须为"springSessionRepositoryFilter",不然服务器没法启动。