在Java EE中,会话超时时间可以以哪些方式定义?我想要超越显而易见的方式,比如在web.xml中设置会话超时或HttpSession.setMaxInactiveInterval()。
我正在审核一个Java EE应用程序,但是我找不到任何与会话超时定义相关的内容。这个Web应用程序在Weblogic上运行。我认为由于没有会话超时定义,所以会话永远不会过期。
在Java EE中,会话超时时间可以以哪些方式定义?我想要超越显而易见的方式,比如在web.xml中设置会话超时或HttpSession.setMaxInactiveInterval()。
我正在审核一个Java EE应用程序,但是我找不到任何与会话超时定义相关的内容。这个Web应用程序在Weblogic上运行。我认为由于没有会话超时定义,所以会话永远不会过期。
如果您想知道Weblogic中会话如何超时,我可以在weblogic.xml
中添加TimeoutSecs
或检查代码中任何在注销时通过session.invalidate()
终止会话的点。
顺便说一下,这不会是无限的。
在Weblogic上,如果没有指定值,web.xml中的默认值是使用weblogic.xml中的TimeoutSecs
值,默认为3600秒即60分钟。(参见此处)
与Spring无关:
通过response.setHeader("Set-Cookie", cookiestring);
自己控制cookie。它的expires
属性控制会话超时。这将覆盖任何servlet容器或web.xml
默认值,但在Java代码中可以通过HttpSession#setMaxInactiveInterval()
进行覆盖。
在servlet容器级别配置默认值。例如,在Tomcat中,通过<manager>
元素的maxInactiveInterval
属性。这可以通过web.xml
中的<session-timeout>
和Java代码中的HttpSession#setMaxInactiveInterval()
进行覆盖。
更新 根据评论和问题的更新:
如果没有指定,则将使用Servlet容器管理的默认超时时间。这通常是30分钟(对于Tomcat和克隆版本是正确的)。这样,会话将在客户端在会话中发送的最后一个请求后30分钟过期。此外,当客户端关闭并重新打开浏览器实例或清除cookie时,将创建一个新会话(旧会话将在默认的30分钟超时后过期)。