我有一個使用HTTP會話跟蹤用戶狀態的Web應用程序。我試圖調試一個錯誤,我必須將會話超時設置爲2分鐘。我修改了web.xml - >會話超時爲2.通過向自定義HTTP會話偵聽器添加日誌語句,我可以看到會話在2分鐘後創建並銷燬,當我沒有登錄到應用程序時。登錄後,會話在創建後大約20分鐘後被銷燬。我也嘗試關閉瀏覽器以避免任何延長會話生命期的AJAX調用,但我仍然看到相同的行爲。它看起來應用程序中的其他內容正在延長會話生命週期,可能原因是什麼?從哪裏開始尋找解決這個問題?Web應用程序中HttpSession的奇怪行爲
0
A
回答
0
確認您的登錄servlet,目標jsp或任何會話偵聽器不會以編程方式覆蓋web.xml中設置的會話超時值。在您的代碼庫中搜索setMaxInactiveInterval。在你的代碼
session.setMaxInactiveInterval(20*60); // seconds
0
首先請確保您已設置會話時間編程,可取代XML值,當你登錄。代碼
打印getMaxInactiveInterval()結束。如果它不是你在web.xml中設置的,那意味着它在別的地方改變了。
檢查代碼中的setMaxInactiveInterval(int interval)。
HttpSession一直存在,直到它還沒有被使用超過一段時間,您可以在web.xml中指定一個默認值爲30分鐘的設置。因此,當客戶端不再訪問webapp超過30分鐘時,servletcontainer將垃圾會話。每一個後續的請求,即使指定了cookie,也不會再訪問同一個會話。 servletcontainer將創建一個新的。
檢查會議api更多細節
0
如果20分鐘的不是一個精確的估計: 你使用request.getSession();
或request.getSession(true);
隨時隨地獲取會話? 如果是的話,那可能是一個原因。
而爲了避免它request.getSession(false);
可以幫助你阻止延長會話的生命時間。
「約20分鐘」的近似值可能與業務邏輯請求的生命週期有關,其中會話打開到db或某些其他處理。
正如其他答案中所建議的那樣,"setMaxInterval();"
可能是奇數「20分鐘」現象的原因。
相關問題
- 1. 奇怪的QT應用程序行爲
- 2. Android應用程序行爲奇怪
- 3. 在Rails應用程序中處理程序的奇怪行爲
- 4. 奇怪的程序行爲
- 5. WPF應用程序的語言使用中的奇怪行爲
- 6. 在JavaFX應用程序中使用變量的奇怪行爲
- 7. 通用Windows應用程序中奇怪的ListView行爲
- 8. qt程序中strstr的奇怪行爲
- 9. 在我的iOS應用程序中奇怪的鍵盤行爲
- 10. 更新狀態時React應用程序中的奇怪行爲
- 11. 在Program Files中安裝奇怪的.NET應用程序行爲
- 12. Grails應用程序中奇怪的Hibernate/Gorm行爲
- 13. 在iPhone應用程序中出現奇怪的OpenGL ES行爲
- 14. Javascript單頁應用程序在IE11中的奇怪行爲
- 15. 去例行程序的奇怪行爲
- 16. 奇怪的串行端口行爲崩潰應用程序
- 17. 在Web應用程序中獲取奇怪的錯誤
- 18. 在asp.net web應用程序中奇怪的慢 - VS 2008
- 19. Android應用程序中奇怪的NetworkOnMainThreadException?
- 20. 真的很奇怪的應用程序的顏色行爲?
- 21. 奇怪的cron行爲......神祕的 「應用程序」 找不到
- 22. 連接到PostgreSQL的Grails應用程序的奇怪行爲
- 23. Asp.Net應用程序的奇怪的Firefox行爲
- 24. 審查應用程序行爲後奇怪爲什麼?
- 25. C程序奇怪的行爲printf
- 26. C程序,奇怪的行爲
- 27. OpenMP程序的奇怪行爲
- 28. C程序的奇怪行爲
- 29. 彙編程序奇怪的行爲
- 30. 奇怪發佈web應用
看看他的答案和來源。 http://stackoverflow.com/questions/3118968/sessiontimeout-web-xml-vs-session-maxinactiveinterval –