1.session共享是基於spring+redis來實現的,首先從web.xml開始說起。
2. 在web.xml裡面配置了乙個filter,**如下:springsessionrepositoryfilter
org.springframework.web.filter.delegatingfilterproxy
delegatingfilterproxy 類將通過springsessionrepositoryfilter 這個名稱去查詢spring容器中配置的bean並將其轉換為過濾器,對於呼叫delegatingfilterproxy的每個請求,將呼叫springsessionrepositoryfilter這個過濾器。
3.配置spring-redis.xml
(3-1)redishttpsessionconfiguration通過@bean的方式將
redismessagelistenercontainer、redistemplate、redisoperationssessionrepository
等注入到spring容器中。4.當我們配置 delegatingfilterproxy 時,會配置 filter-name:springsessionrepositoryfilter,當我們配置 redishttpsessionconfiguration 這個bean時,這個filter 則由spring 給我生成,而這個filter 實際是 :sessionrepositoryfilter, 當有請求到達時,delegatingfilterproxy 委託給 sessionrepositoryfilter,而它又將httpservletrequest,httpservletresponse 進行一定的包裝,重寫對session操作的介面,然後將包裝好的request,response 傳遞到後續的filter中,完成了對session的攔截操作,後續應用操作的session 都是spring session 包裝後的session。
5.這個是基本的實現,下次對原始碼做個簡單分析。
tamcat多個應用實現session共享
由於專案需要乙個應用訪問另乙個應用進行許可權驗證,所以研究了一下session共享,session共享能夠使得乙個應用系統訪問另乙個應用系統。在乙個tomcat中部署兩個應用,設定crosscontext true,讓兩個應用可以在tomcat中交叉使用上下文環境。server.xml 然後用其中乙...
redis實現session共享,實現單點登入
所需環境 兩台伺服器a和b模擬集群 兩台電腦 乙個mysql5.7,redis伺服器,demo分別部署在a和b中,a中名為demo1,b中名為demo2 為了加以區分 mysql5.7和redis都是在b中開啟的 測試原理 demo1在a中訪問login.jsp頁面登入進去之後會在瀏覽器儲存乙個js...
用Redis實現Session功能,實現單點登入
redis是乙個開源的使用ansi c語言編寫 支援網路 可基於記憶體亦可持久化的日誌型 key value資料庫,並提供多種語言的api 維基百科 一般開發中使用者狀態使用session或者cookie,兩種方式各種利弊。session 在inproc模式下容易丟失,並且引起併發問題。如果使用sq...