2010-02-18 81 views
2

服務基於Flash的培訓材料用戶正在經歷HttpSession會話超時時間。目前,不活動超時設置爲默認(30分鐘)。J2EE - 在服務Flash內容時處理HttpSession會話時間軸

問題:

  1. 難道是一個好主意,試圖增加MaxInactiveInterval對於誰是請求訓練Flash視頻,防止超時任何用戶?

  2. 如果HttpSession與查看培訓內容相關聯,更好的方法是使用servlet生命週期偵聽器重新激活HttpSession嗎? - 這可以允許更精確地控制何時HttpSession對象將超時。

  3. 只有一小部分用戶會在任何時候看到這些材料,是否有性能損失,應該考慮這樣做?

回答

1

Flash視頻是嵌入HTML頁面嗎?如果是這樣,也許你可以在頁面上有一個AJAX調用,定期發送一個「心跳」到服務器以保持會話的活躍。

+0

下面是一個很好的解釋:http://ajaxpatterns.org/Heartbeat – Aito 2010-02-18 16:31:35

2

寧可在後臺啓動ajax民意調查。

這是一個SSCCEjQuery的一點幫助。只需copy'n'paste'n'run它(並更改Flash對象以適合您的實際代碼)。

<!doctype html> 
<html lang="en"> 
    <head> 
     <title>SO question 2290101</title> 
     <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
     <script> 
      $(document).ready(function() { 
       setInterval(function() { 
        $.get('poll'); 
       }, ${(pageContext.session.maxInactiveInterval - 10) * 1000}); 
      }); 
     </script> 
    </head> 
    <body> 
     <object type="application/x-shockwave-flash" ... > 
      ... 
     </object> 
    </body> 
</html> 

這裏${pageContext.session.maxInactiveInterval}返回秒剩餘會話尚未生活(並且已經一點點縮短 - 只是要及時與poll-並轉換爲毫秒,這樣它適合什麼setInterval()預計)。 $.get('poll')應該調用一個映射到url-pattern/poll的servlet,並在doGet()方法中基本包含以下行。

request.getSession(); // Keep session alive. 

就是這樣。