Java EE中的会话超时

时间:2011-02-10 14:14:11

标签: servlets java-ee weblogic session-timeout

在哪些方面可以在Java EE中定义会话超时的时间?我正在寻找超越明显的方法,例如在web.xml或HttpSession.setMaxInactiveInterval()中设置会话超时。

我目前正在审查Java EE应用程序,但是找不到与会话超时定义相关的任何内容。 Web应用程序位于Weblogic中。我假设由于没有会话超时定义,会话将永不过期。

2 个答案:

答案 0 :(得分:4)

当您正在寻找如何在Weblogic中超时的会话时,我可以添加

TimeoutSecs

weblogic.xml或在注销时检查会话被session.invalidate()杀死的代码中的任何一点。

顺便说一下,它不会是无限的。

在Weblogic上,web.xml中的默认值(如果未指定值)是使用weblogic.xml中的TimeoutSecs值,defaults to 3600 secs即60分钟

答案 1 :(得分:1)

与Spring无关:

  • response.setHeader("Set-Cookie", cookiestring);自己控制cookie。它是控制会话超时的expires属性。这会覆盖任何servletcontainer或web.xml默认值,但无论如何都可以由HttpSession#setMaxInactiveInterval()覆盖。

  • 在servletcontainer级别配置默认值。例如,在Tomcat中,maxInactiveInterval元素的<session-timeout>属性。无论如何,web.xml中的{{1}}和Java代码中的<manager>都可以覆盖此内容。


根据评论和问题更新

更新

如果未指定,则将使用servletcontainer管理的默认超时。这通常是30分钟(对于Tomcat和克隆来说也是如此)。这样会话将在客户端在会话中发送的最后一个请求后30分钟到期。此外,当客户端关闭并重新打开浏览器实例或清除cookie时,将创建一个新会话(旧会话将在默认的30分钟超时后过期)。