Glassfish中一个永不过期的会话什么时候会被销毁?

时间:2014-02-25 14:26:15

标签: java-ee glassfish

我正在使用Glassfish 3,我希望会话永不过期,只要浏览器窗口打开即可。根据{{​​3}},可以调整session-timeout中的web.xml。我可以将它设置为0,它永远不会过期。

但我不安全,这意味着什么。假设用户已登录,几小时后他只需关闭浏览器窗口。那种情况发生在服务器上的会话?它会是一个匿名的会话,它会留在记忆中,还是会被Glassfish杀死?或者当用户明确注销时它会被销毁吗?

那么,Glassfish何时会使永不过期的会话无效?

1 个答案:

答案 0 :(得分:2)

正如这个词已经描述的那样:永远不会。

来自servlet规范:

  

根据定义,如果会话的超时时间设置为-1,则   会话永远不会过期。

您也可以在HttpSession.setMaxInactiveInterval(int val)的文档中阅读此内容。

  

session-config定义此Web的会话参数   应用。子元素会话超时定义默认值   在此Web中创建的所有会话的会话超时间隔   应用。指定的超时必须以整体表示   分钟数。 如果超时为0或更少,则容器确保    会话的默认行为永远不会超时。如果这个元素   如果未指定,则容器必须设置其默认超时时间。

关于:

  

假设用户已登录,几个小时后他就会关闭   浏览器窗口。在那种情况下发生的事情发生在会议上   服务器?它会是一个匿名会话,它仍留在记忆中,   或者它会被Glassfish杀死吗?或者只是   当用户明确注销时销毁?

服务器(在大多数情况下)不知道并且不关心您的浏览器窗口是否打开,因此关闭浏览器窗口不会改变任何会话状态。在取消/重新部署应用程序或关闭应用程序服务器之前,会话将保留在Glassfish的内存中。

另见: