java - J2EE——在提供 Flash 内容时处理 HttpSession session 超时

标签 java servlets session-timeout

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

问题:

  1. 对于请求培训 Flash 视频以防止超时的任何用户,尝试增加 MaxInactiveInterval 是个好主意吗?

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

  3. 只有一小部分用户会在任何时候真正查看此 Material ,这样做是否应该考虑性能损失?

最佳答案

而是在后台启动 ajax 民意调查。

这是一个SSCCEjQuery 的帮助下。只需复制“粘贴”然后运行它(并更改 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}返回 session 尚未存在的剩余秒数(并且稍微缩短了 - 只是为了及时进行轮询 - 并转换为毫秒,以便它符合 setInterval() 的期望)。 $.get('poll') 应该调用一个映射到 /pollurl-pattern 的 servlet,并且基本上包含以下内容doGet() 方法中的一行。

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

就是这样。

关于java - J2EE——在提供 Flash 内容时处理 HttpSession session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2290101/

相关文章:

java - 创建 ServletContext 资源中定义的名称为 'entityManagerFactory' 的 bean 时出错 [/WEB-INF/dispatcher-servlet.xml] :

java - 从 URL 获取 session 过期时间

session - 以分钟和秒为单位的 J2EE session 过期设置

java - 我正在尝试 Spring MVC,当我在 Controller 类中添加 @Autowired 时,出现以下错误 :

java - 比较枚举条目 - Java

java - 在servlet中读取和写入文本文件

mysql - 使用 C3P0 的 Hibernate 在 Oracle 上运行良好,但不关闭与 MySQL 5.6 的连接

asp.net - session 超时意外值 9999

java - 字符串常量池 vs 字符串池

Java 编译器认为 byte[] 是 String