在提供基于 Flash 的培训 Material 时,用户会定期遇到 HttpSession session 超时。目前,不活动超时设置为默认值(30 分钟)。
问题:
对于请求培训 Flash 视频以防止超时的任何用户,尝试增加 MaxInactiveInterval 是个好主意吗?
如果 HttpSession 与查看培训内容相关联,更好的方法是使用 servlet 生命周期监听器来重新激活 HttpSession 吗? -- 这可以允许更精确地控制 HttpSession 对象何时超时。
只有一小部分用户会在任何时候真正查看此 Material ,这样做是否应该考虑性能损失?
最佳答案
而是在后台启动 ajax 民意调查。
这是一个SSCCE在 jQuery 的帮助下。只需复制“粘贴”然后运行它(并更改 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')
应该调用一个映射到 /poll
的 url-pattern
的 servlet,并且基本上包含以下内容doGet()
方法中的一行。
request.getSession(); // Keep session alive.
就是这样。
关于java - J2EE——在提供 Flash 内容时处理 HttpSession session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2290101/