說明:在使用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",不然服務器沒法啓動。