【问题标题】:How do I set session timeout of greater than 30 minutes如何设置大于 30 分钟的会话超时
【发布时间】:2009-09-10 16:22:20
【问题描述】:

有人知道如何将会话超时设置为大于 30 分钟吗? 这两种方法都不起作用(默认为 30 分钟)。

<session-config>
<session-timeout>60</session-timeout>
</session-config>

session.setMaxInactiveInterval(600); 

谢谢。

【问题讨论】:

标签: jsp servlets


【解决方案1】:

通过部署描述符设置会话超时应该可以工作 - 它为 Web 应用设置默认会话超时。调用 session.setMaxInactiveInterval() 设置调用它的特定会话的超时,并覆盖默认值。也要注意单位差异 - 部署描述符版本使用分钟,而 session.setMaxInactiveInterval() 使用秒。

所以

<session-config>
    <session-timeout>60</session-timeout>
</session-config>

将默认会话超时设置为 60 分钟。

session.setMaxInactiveInterval(600);

将会话超时设置为 600 秒 - 10 分钟 - 用于调用它的特定会话。

这应该可以在 Tomcat 或 Glassfish 或任何其他 Java Web 服务器中工作 - 它是规范的一部分。

【讨论】:

  • 为什么框架设计者拒绝理解使用单位的好处仍然是个谜。使用单位的一个很好的框架是 UCUM (unitsofmeasure.org)。
【解决方案2】:

如果您希望会话永不过期,请使用 0 或负值 -1

<session-config>
    <session-timeout>0</session-timeout>
</session-config>

或提及1440表示1440 minutes [24hours * 60 minutes]

<session-config>
  <session-timeout>1440</session-timeout><!-- 24hours -->
</session-config>

会话将在24hours之后过期。

【讨论】:

    【解决方案3】:

    这将使您的会话保持所有内容直到浏览器关闭

    session.setMaxinactiveinterval(-1);
    

    这应该设置为 1 天

    session.setMaxInactiveInterval(60*60*24);

    【讨论】:

      【解决方案4】:

      如果您被允许在全局范围内执行此操作,那么您可以在

      中设置会话超时

      TOMCAT_HOME/conf/web.xml 如下

       <!-- ==================== Default Session Configuration ================= -->
        <!-- You can set the default session timeout (in minutes) for all newly   -->
        <!-- created sessions by modifying the value below.                       -->
      
      
      <session-config>
              <session-timeout>60</session-timeout>
      </session-config>
      

      【讨论】:

      • 我认为这会为任何不提供值的 Web 应用程序设置默认值 - 在其部署描述符中为特定 Web 应用程序设置默认值或在特定会话上调用 setMaxInactiveInterval 都应该覆盖它。
      【解决方案5】:

      在web.xml中设置超时是设置超时的正确方式。

      【讨论】:

      • 是的,我知道,但它不允许我将会话超时设置为大于 30 分钟。
      • “它不会让”你是什么意思?它会抛出异常吗?阻止服务器启动?弹出错误对话框?或者只是似乎不遵守设置的超时?在部署描述符中设置超时可能需要您重新启动 Web 应用程序和/或服务器以使新值生效。我看不出在会话上调用 setMaxInactiveInterval 会产生什么影响......也许其他东西正在设置 setMaxInactiveInterval 或使会话无效?
      • @Rocky - 与 Nate 相同的问题。 “不让我”是什么意思?
      • web.xml/session-config/session-timeout 只是会话的最大空闲时间。如果会话空闲时间较长,则 servlet 容器将丢弃与会话关联的所有数据项。因此,如果您通过 cookie 访问会话,并且 cookie 的生命周期较短,那么从用户的角度来看,会话在容器的角度来看是活跃的。
      猜你喜欢
      • 2010-12-16
      • 2011-10-18
      • 1970-01-01
      • 2013-04-19
      • 2018-05-15
      • 2013-11-23
      • 2018-07-26
      • 2015-03-31
      • 2013-06-15
      相关资源
      最近更新 更多