概述:簡述本次記錄的主要内容
shiro的session:關于shiro的session管理
實作共享
總結
因為項目中用到了shiro的權限控制,而且使用的是shiro的session,是以我就基于shiro的session管理基礎上對session進行多tomcat共享,共享的思路也很簡單,就是将session儲存到資料庫,每個伺服器在收到用戶端請求的時候都從資料庫中取,這樣就統一了多個伺服器之間的session來源,實作了共享。隻不過這裡我使用的資料庫是redis。
在明白了shiro的session管理之後,我們就可以在此基礎上進行session的共享了,其實隻需要繼承EnterpriseCacheSessionDAO(其實繼承CachingSessionDAO就可以了,但是這裡考慮到叢集中每次都通路資料庫導緻開銷過大,這裡在本地使用ehcache進行緩存,每次讀取session的時候都先嘗試讀取本地ehcache緩存,沒有的話再去遠端redis資料庫中讀取),然後覆寫原來的增删改查操作,這樣多個伺服器就共享了session,具體實作如下:


上面的主要邏輯是實作session的管理,下面是和redis資料庫互動


這裡隻是實作了簡單的session共享,但是對session的管理還不夠全面,比如說session的驗證。其實通過tomcat容器本身就可以實作session共享,後面再詳細了解下tomcat對于session的管理。