關於WebLogic的Session丟失的問題

2021-08-30 07:05:14 字數 1197 閱讀 4099

最近在把tomcat下的程式遷移到weblogic上的時候遇到了問題,我的程式中有乙個過濾器,這個過濾器主要用來檢查當前使用者訪問的資源是否需要認證,如果需要認證並且沒有認證的話,則跳轉到另外乙個認證伺服器上去做認證,認證通過後,再跳轉回當前伺服器繼續訪問請求的資源。這個過濾器在tomcat下執行的很正常,但是遷移到weblogic上的時候就出現頁面亂跳轉的現象,因為對程式沒有做任何改動,所以懷疑是tomcat和weblogic這兩個不同的web容器在處理方式上有差別,於是就在過濾器中加入了一些輸出資訊,通過觀察發現了使用者的sessionid在weblogic上跳轉前後發生了變化,而在tomcat上跳轉前後則不會有任何變化。頁面的跳轉是通過response.sendredirect("***.jsp")來實現的,因此懷疑weblogic在這個方法的處理上跟tomcat上不同而導致錯誤產生(很愚蠢的懷疑,這也導致我在查詢問題的方向上出現了錯誤),一直認為可以通過修改weblogic的weblogic.xml這個檔案來解決,在網上搜了很多,也在看了一天weblogic的資料,都沒有解決。後來無意中發現了乙個問題,我如果訪問的資源都是本地伺服器上的,那麼去認證之後就不會報錯,如果是其他伺服器的(其他伺服器也使用同乙個認證伺服器做認證)則會出現上述問題,對cookie做了進一步的跟蹤,發現cookie裡面的jsessionid在訪問了其他伺服器之後就被修改了,也就是原來的jsessionid不見了。同樣的事情,在tomcat上就不會出現(到現在我還認為是tomcat和weblogic的差別)。在google上搜尋了n遍無果之後,在baidu上終於結果了,有人遇到過跟我相同的問題,這個問題並不是tomcat和weblogic的差別引起的,我在查詢問題原因的時候忽略了乙個細節,也就是遷移到的weblogic伺服器上,和另外幾個伺服器(包括認證伺服器)都在同乙個ip位址的不同埠下,也就是在同乙個域下,而這應該就是問題的所在。具體的細節我還沒有搞清楚,但應該是訪問了同乙個伺服器而導致了jsessionid發生了覆蓋,解決方法很簡單

如下:兩個web使用不同的sessionid來標識,如第乙個web使用jsessionid1,第二個web使用 jsessionid2就可以了。 直接在每個web程式下配置weblogic.xml

cookiename

jsessionid1

我只是修改了我的伺服器上的weblogic,而沒有修改其他伺服器的,以上問題得到解決了。

同樣,這也解釋了為什麼在最開始的時候我發現jsessionid在tomcat下不變,而在weblogic上確改變了的問題

關於weblogic(持續更新)

weblogic可以新建很多個域,分為管理域和節點域,管理域有乙個,節點域可以有很多,每個域就相當於tomcat的更改埠後新加的服務一樣,每個域中又可以部署很多個專案。weblogic的部署模式分為開發者模式和生產模式,開發者模式追求的是靈活性,因為要開發測試,頻繁部署,其特點就是可以自動更新部署,...

關於Weblogic執行緒數的幾點使用

2014 09 30 10 26 29 分類 預設分類 舉報 字型大小訂閱 一 背景 最近負責做乙個平台的poc測試,效能測試要求測試1000併發下平台的表現,web伺服器採用的是weblogic,版本是11g,10.3.6,所有操作都是基於這個版本 因為以前修改執行緒數的操作有些基於這個版本不能生...

關於Tomcat重啟和關閉後重啟session變化

當頁面第一次訪問,session的attribute還未賦值,為null 當頁面第二次訪問時,這時當前的session的attribute有值了!到了本文章的點題時刻!如果我是直接點選server的 之後頁面再訪問,結果如下圖所示!可以看到,session竟然沒有被清除,並且完好的儲存了下來!但是如...