天天看點

tomcat如何共享多個web應用會話

今天有位朋友問了個問題,大緻是:tomcat下兩個Java web,一個是商城,一個是直播,從商城登入後,再跳轉到直播,發現處于非登入狀态。

将session抽出來成一個session服務,統一通過該服務操作session。

tomcat内部用會話管理器擷取會話時周遊所有context内的會話。

重寫擷取session方法即可。

找了源碼發現已經支援類似周遊所有context内的會話的形式,首先擷取session時,如果cressContext屬性為true,則會在擷取不到時嘗試周遊所有context是否存在該sessionid,如果存在則在本context根據sessionid建立自己的session對象。

context(web應用)擷取跨應用session時通過類似下面操作擷取:

這是因為request會根據cookies的sessionid擷取到session對象,這時不會報找不到,因為前面已經根據其他sessionid建立了一個session對象,然後getContext操作會擷取對應url的context,接着進行會話操作。

點選訂購作者《Tomcat核心設計剖析》

tomcat如何共享多個web應用會話