2011-07-12 80 views
1

我正在調試一個問題,即對我們的weblogic服務器的調用通常會返回一個新的JSESSIONID值,取代最初發送的JSESSION。在WebLogic上創建調試會話

該問題頻繁發生,但並不一致。 (也就是說,當它影響到你時,它會影響到你的流量的90%)。

我們已經證明這個問題似乎與實際的服務器調用無關,這使得我很難調試任何具體的方法。

有沒有辦法掛鉤到WebLogic中的JSESSION創建,看看是什麼導致會話被創建/銷燬/失效?

附加一個遠程調試器會很好,但我會解決某種形式的日誌記錄,可能會指向正確的方向?

+0

是您的weblogic環境聚集並由Apache或任何其他Web服務器或負載平衡開關前? – JoseK

+0

@JoseK - 是的,顯示問題的環境在兩臺服務器之間有一個Apache服務器平衡。但是,我們驗證了所有調用都是在同一個WebLogic實例 –

+0

上發生的,因爲在過去,當Apache通過WL轉換請求切換請求時,導致用戶獲得新的JSESSIONID。如果你的所有實例都碰到同一個實例,那麼問題在於WL爲什麼不識別JSESSIONID - 所以這些被保留,即在Apache和WL之間傳遞通過可能是一個方面。其次,如果相同的JSESSIONID在20分鐘內或任何會話超時時間內擊中,那麼WL應該已經識別它 - 所以你正確地跟蹤會話被破壞的地方。我想知道是否有明確的代碼session.invalidate()會影響所有。 – JoseK

回答

2

這是servlet規範的標準部分(不是特定於WebLogic)。你想要HttpSessionListener界面。

請注意,Servlet會話的東西真的很糟糕 - 當你遇到內存問題時,你會發現這種行爲可能會發生,等等。對於解構,請查看SeaJUG(反思用戶和用戶會話管理) 。幻燈片和視頻已發佈。

+0

太好了 - 非常感謝。我寫了一個sessionListener,它幫助我指出了導致我們問題的方向。 –

0

Nodemanager/WLST對於使用Weblogic Admin,Enterprise Fusion Middleware Control或Cloud Control調試和監視服務器也很有用。