2010-08-09 101 views
0

我有一個關於會話管理的問題。這是場景。會話管理 - Websphere應用服務器

在同一網絡上有3組用戶。有一個J2EE應用程序設置爲在60分鐘後結束用戶的會話。這些組是A,B和C.現在,組A,B和C都登錄到J2EE應用程序並開始使用它。 A組用戶可以毫無問題地使用該應用程序。 B組和C組儘管被踢出了不同時間,但都在60分鐘的設定時間之前。現在來自A組的用戶轉到B組的PC。 B組用戶使用他們的AD憑證登錄到他們的PC,然後A組用戶登錄到J2EE應用程序。過了一段時間,在60分鐘的會話時間之前,A組用戶的會話過早結束。

還在我身邊嗎?但願如此。

現在,B組用戶轉到A組用戶的PC並執行上述操作。 A組用戶使用他們的AD憑證登錄到他們的PC,B組用戶登錄到J2EE應用程序。 B組用戶沒有超時問題,並且在會話結束的60分鐘設置時間之前不會被踢出。

Whe!因此,看起來J2EE應用程序不會終止用戶的會話,因爲B組用戶在登錄到A組用戶PC時沒有問題。

現在,有人能夠解釋如何發生這種情況?我在想應用程序服務器(Websphere App Server 6.1)可能被配置爲做這樣的事情,但我不是一個websphere管理員。

任何想法或建議,我可以嘗試解決這個問題將不勝感激。另外,請問任何問題,因爲我知道在我的解釋中可能會遺漏一些事情。

謝謝!

+0

遵循了相同的路徑到應用程序的所有用戶? – 2010-08-09 18:12:22

+0

是的,所有用戶都遵循相同的路徑應用程序。 – Ruepen 2010-08-09 19:36:02

+0

你使用cookies嗎? – 2010-08-10 21:43:15

回答

0

您是否在代碼中設置了HttpSession.setMaxInactiveInterval(int secs)。這會覆蓋WebSphere中的其他設置。也許你有一個正在設置的隨機值?

+0

我檢查了HttpSession。setMaxInactiveInterval(int secs),它只在1處使用,並且該值不是隨機值。它設置爲3600秒(60分鐘)。 – Ruepen 2010-08-10 13:05:19

0

除了嘗試羅曼提供的建議也嘗試這一點。您可以打印HTTPSession的內容(及其屬性)並查看這些值的含義。

使用HTTPSessionListener,會話被創建和銷燬時會收到通知。

這會告訴你會話何時被破壞。

應用程序中的某些東西很可能會觸發它。

很難說出什麼是可能的問題,我們可以採取這些方法的初步嘗試。

HTH Manglu

+0

我將嘗試您在我們的生產環境下一次計劃部署期間提出的建議。但是,您如何解釋只發生在B組和C組的事實,但是A組在60分鐘之前沒有被踢開?他們都碰到同一個應用程序。請再次閱讀我的詳細信息,您會注意到,當B組用戶使用A組用戶的PC登錄到應用程序時,他在60分鐘之前未被踢出。這不像是網絡相關的嗎? A組的PC配置方式可能有些不同嗎? – Ruepen 2010-08-10 13:14:11

+0

@Ruepen, 我會檢查HTTP頭並查看在每次調用中發送的LTPA令牌和HTTP SessionID,並查看HTTPSessionID何時不再由服務器發回。 這有效地產生了您被服務器踢出的印象。通過查看服務器端,並尋找來自A組PC的會話ID,您將能夠得出合理的結論。 網絡不應該有選擇地刪除一些HTTP頭信息。我並不是說網絡不是罪魁禍首,但它不太可能。 – Manglu 2010-08-11 00:22:28