nginx+tomcat反向代理下使用tomcat-redis-session-manager進行session共享中值得注意的一個問題


公司目前項目使用nginx反向代理+多個tomcat進行負載均衡,之前使用ip_hash策略進行session控制。近期有考慮不再使用ip_hash策略,所以需要進行session共享。

根據項目實際情況,擬考慮使用開發配置比較簡單,應用比較廣泛的tomcat-redis-session-manager方式進行session共享,具體設置請參考 http://www.cnblogs.com/interdrp/p/4056525.html

公司原來項目使用spring security框架進行安全控制,在測試的時候發現一個詭異的問題,在前端登錄的時候,自定義的session已經共享成功,但是登錄提交后總是跳轉到j_spring_security_check,security的content為空,security並沒有創建和保存登錄后的session。

發現一個問題,當自定義的session創建后,tomcat會調用tomcat-redis-session-manager將其序列化然后保存到redis上去,當使用request.getSession().setAttribute(key,value);設值的時候,如果value為null,空對象,則會造成異常,且此異常並不在項目代碼中創建,難以追蹤到。

所以一旦使用tomcat-redis-session-manager方式進行session共享,項目代碼中在使用request.getSession().setAttribute(key,value)的時候,最好需要判斷一下value是否為空對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM