推測是:java代碼部分處理沒處理好(threadlocal 沒remove),一般是不影響,但是再weblogic容器下會有問題。換成tomcat沒問題。
模拟情況1:
電腦 1 使用者a 登入報價
電腦2 使用者b登入報價 背景使用者c登入同一個浏覽器檢視。
電腦1 使用者a報價 使用者b顯示的資訊變成使用者a
模拟情況2:
電腦 1 使用者a 登入報價
電腦2 使用者b登入報價
電腦1 使用者a在同一浏覽器中打開另外一個單點登入的應用後,回到報價頁面點重新整理按鈕報價資料(不是重新整理頁面),頁面資料變為使用者b的資訊。
重新整理按鈕背景調用的是threadlocal.get使用者。
推測:系統沒有調用threadlocal.remove ,而weblogic對這塊有處理優化,可能是導緻串使用者的原因
調試發現,tomcat沒這個問題,weblogic有這個問題。
weblogic下,idea調試 thealocal get方法(第一次通路系統,不需要上面那種操作),發現變量好像串了,t是null,下面的map反而是t。很奇怪,如圖:

但是tomcat下就不會串。正常的
另外按照上面會出現錯誤的流程來,會發現,thread 會來回變,有時候是正确的,有時候是錯誤的。可能因為是null的緣故?
如果真的是null,那麼擷取到有問題也是正常,因為是通過map來擷取嘛。
參考:https://www.cnblogs.com/xubiao/p/5462170.html
後面發現除了這個問題,還是有session沖突的問題
當使用者使用浏覽器通路web服務時,web服務會查找記憶體中是否有對應的session對象,如果有,則通過session id可以找到,如果沒有,則web服務會為浏覽器建立一個session對象,并生成session id。session id會傳回到浏覽器上使用cookie儲存起來,浏覽器下次請求的時候把該cookie帶上則可以被web服務識别了。
如果一個新的cookie與一個已存在的cookie的NAME、Domain和Path屬性值均相同,則舊的cookie會被丢棄
上面的問題還有一個問題就是後面另外一個系統登入後,前一個系統單點登入擷取到的是null,兩個網站用的是同一個單點登入,但是按照session沖突的方法改了後,這個問題也不存在了,可能也是因為session的問題吧。
總的來說處理了兩個地方:
threadlocal.set之前,remove掉。(threadlocal問題)
每個網站加上唯一的cookiename,區分開來(session沖突問題)
參考:http://www.cnblogs.com/guanjianzhuo/p/9488068.html
參考:https://bijian1013.iteye.com/blog/2277538