SpringSession管理

說明:在使用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",不然服務器沒法啓動。
相關文章
相關標籤/搜索