我正在使用Glassfish 3,我希望会话永不过期,只要浏览器窗口打开即可。根据{{3}},可以调整session-timeout
中的web.xml
。我可以将它设置为0,它永远不会过期。
但我不安全,这意味着什么。假设用户已登录,几小时后他只需关闭浏览器窗口。那种情况发生在服务器上的会话?它会是一个匿名的会话,它会留在记忆中,还是会被Glassfish杀死?或者当用户明确注销时它会被销毁吗?
那么,Glassfish何时会使永不过期的会话无效?
答案 0 :(得分:2)
正如这个词已经描述的那样:永远不会。
来自servlet规范:
根据定义,如果会话的超时时间设置为-1,则 会话永远不会过期。
您也可以在HttpSession.setMaxInactiveInterval(int val)的文档中阅读此内容。
和
session-config定义此Web的会话参数 应用。子元素会话超时定义默认值 在此Web中创建的所有会话的会话超时间隔 应用。指定的超时必须以整体表示 分钟数。 如果超时为0或更少,则容器确保 会话的默认行为永远不会超时。如果这个元素 如果未指定,则容器必须设置其默认超时时间。
关于:
假设用户已登录,几个小时后他就会关闭 浏览器窗口。在那种情况下发生的事情发生在会议上 服务器?它会是一个匿名会话,它仍留在记忆中, 或者它会被Glassfish杀死吗?或者只是 当用户明确注销时销毁?
服务器(在大多数情况下)不知道并且不关心您的浏览器窗口是否打开,因此关闭浏览器窗口不会改变任何会话状态。在取消/重新部署应用程序或关闭应用程序服务器之前,会话将保留在Glassfish的内存中。
另见: