專案中session共享問題

2021-08-31 06:28:13 字數 814 閱讀 8094

前提:專案用的是jboss4.0作為容器,使用struts1.0+ejb3.0。

問題:系統登入時要儲存使用者的許可權資訊到session中,進入子系統時要求能讀取到登入系統中儲存的session資訊

嘗試解決方案:

1)將許可權資訊寫到檔案儲存到伺服器,進入每個子系統時再讀出來寫到各自的session中

致命缺點:寫檔案速度太慢,測試支援同時登入的併發數只有3、40人(寫檔案都儲存在同乙個資料夾下,磁碟頭都需要被占用)

2)將許可權資訊儲存到客戶端cookie中,每次傳送請求時都能同時帶過去

無法實現:①至少需要儲存使用者名稱和許可權code(很多字串),這些東西需要特殊字元分隔,之前使用「;」號,cookie無法寫入成功,上網查原來cookie中不能使用逗號分號之類的特殊字元(即使使用「&」這些沒有被禁止的字元好像也不行,反正盡量就是不要使用特殊字元才行)

②解決上面的問題後依然不成功,原來cookie也有大小限制,最多只能儲存4k的字串,而許可權code的大小不確定,超出這個範圍cookie寫入也不成功。

最後得出結論,cookie不適合儲存大量資訊,只能用於使用者名稱密碼這些小資訊的儲存。

3)每次進入子系統都重新查詢一下許可權資訊

缺點:由於許可權資訊的sql查詢語句較多,檢視也比較複雜,每次查詢會有點慢,影響系統效能(具體影響多少沒有實際資料顯示)

最終:在網上查了關於tomcat的兩個應用session共享的解決方案,通過配置server.xml中的context可以實現,但是jboss是否提供類似功能卻無法查詢,有空繼續尋求解決方案(網上都提到單點登入能解決,可是我搜到的單點登入解決的只是多個系統共用乙個登陸系統,具體到儲存資訊卻沒有提到)

session共享問題

http協議是無狀態的 第一次訪問會生成jsessionid儲存在tomcat的concurrentmap裡伺服器,把jsessionid寫到客戶端的cookie裡面。關於cookie和session的聯絡 cookie中會包含哪些資訊 名字 值 過期時間 路徑 域 cookie會帶到http請求偷...

session共享問題

1,spring session使用的場景?httpsession是通過servlet容器進行建立和管理的,在單機環境中。通過http請求建立的session資訊是儲存在web伺服器記憶體中,如tomcat jetty。假如當使用者通過瀏覽器訪問應用伺服器,session資訊中儲存了使用者的登入資訊...

併發session共享問題

讓負載均衡器能夠根據每次的請求的會話標識來進行請求的 這樣就能保證每次都能落到同一臺伺服器上面,這種方式稱為session sticky方式。如下圖 存在問題 1.如果這一台web伺服器宕機或者重啟了,伺服器上的會話資料會丟失,使用者需要重新登陸等。2.會話標識是應用層的資訊,那麼負載均衡器要將同乙...