2

在提供基于 Flash 的培训材料时,用户会周期性地遇到 HttpSession 会话超时。目前,不活动超时设置为默认值(30 分钟)。

问题:

  1. 尝试为请求训练 Flash 视频以防止超时的任何用户增加 MaxInactiveInterval 是否是个好主意?

  2. 如果 HttpSession 与查看培训内容相关联,那么更好的方法是使用 servlet 生命周期侦听器重新激活 HttpSession 吗?-- 这可以更精确地控制 HttpSession 对象何时超时。

  3. 任何时候只有一小部分用户实际上会查看此材料,这样做是否应该考虑性能损失?

4

2 回答 2

2

而是在后台触发 ajax 民意调查。

这是一个在jQuery的帮助下的SSCCE。只需复制'n'粘贴'n'运行它(并更改闪存对象以适合您的实际代码)。

<!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}返回会话尚未存在的剩余秒数(并且被缩短了一点 - 只是为了及时进行轮询 - 并转换为毫秒,以便符合setInterval()预期)。$.get('poll')应该调用一个映射在url-patternof上的 servlet,该servlet/poll基本上包含方法中的以下行doGet()

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

而已。

于 2010-02-18T17:56:15.833 回答
1

Flash 视频是否嵌入在 HTML 页面中?如果是这样,也许您可​​以在页面上进行 AJAX 调用,定期向服务器发送“心跳”以保持会话处于活动状态。

于 2010-02-18T16:18:02.677 回答