【问题标题】:When will a never expiring session in Glassfish will be destroyed?Glassfish 中永不过期的会话何时会被销毁?
【发布时间】:2014-02-25 14:26:14
【问题描述】:

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

但我不知道这意味着什么。假设用户已登录,几个小时后他只是关闭了浏览器窗口。在这种情况下,服务器上的会话会发生什么?它会是一个匿名会话,它会保留在内存中,还是会被 Glassfish 杀死?还是会在用户明确注销时被销毁?

那么,Glassfish 什么时候会使永不过期的会话失效?

【问题讨论】:

    标签: jakarta-ee glassfish


    【解决方案1】:

    正如这个词已经描述的那样:从不。

    来自 servlet 规范:

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

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

    还有:

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

    关于:

    假设用户已登录,几个小时后他只是关闭 浏览器窗口。在那种情况下会发生什么到会议上 服务器?会不会是一个匿名的会话,留在记忆里, 还是会被 Glassfish 杀死?或者它只是 当用户显式注销时销毁?

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

    另请参阅:

    【讨论】:

    • 感谢您的回答。我已经阅读了另一个线程。但我只是想知道为什么有人应该使用永不过期的会话,当它只是随着时间的推移加载内存?但也许我不知道会话是如何工作的。假设有人关闭了他的电脑并在一天后返回该站点。会话将从内存中恢复还是实例化一个新的会话?它只是用cookies识别吗?我想,我必须阅读更多关于会话如何工作的信息。
    • 是的,会话使用 cookie 进行标识。但是大多数 Web 应用程序使用所谓的会话 cookie,当浏览器关闭时,这个 cookie 会被删除。如果您重新打开浏览器并访问您的 Web 应用程序,则会创建一个新会话并获得一个新 cookie,但旧会话也会保存在服务器的内存中。
    猜你喜欢
    • 1970-01-01
    • 2014-01-22
    • 2018-06-14
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多