配置会话HttpSession的超时时间
来源:互联网 发布:淘宝官方打折工具 编辑:程序博客网 时间:2024/05/18 13:45
如何正确的配置会话HttpSession的超时时间
1、现象:问题描述
针对超时时间的设置,有两种方法可以解决这个问题,
(1) 在Servlet代码中,使用HttpSession对象的方法setMaxInactiveInterVal(int)设置一个会话维持非活动状态的最大秒数。代码如下:
public void doGet(HttpServletRequest req,HttpServletResponse res) throws
ServletException,IOException {
HttpSession session=req.getSession();
session.setMaxInactiveInterval(60);
}
(2).在web.xml文件内通过使用session-config标志设置,通过标志session-timeout可以定义所有非活动HttpSession对象存在的最大时间。
<session-config>
<session-timeout>60</session-timeout>
</session-config>
4、经验总结:预防措施和规范建议
以上两种方法都可以解决问题,第一种方法是将超时值用于特定的servlet,针对每一个Session进行单独设置,而第二种方法是应用于整个web应用程序,所有的Session都遵循这个共同的超时时间,根据不同的需要来选用这两种方法。如果同时使用了这两种方法对同一个Session设置了两个超时时间,那么将以较小的那个时间为准。
1、现象:问题描述
客户端请求与Servlet建立连接之后,将为每一个客户端指派一个HttpSession对象,并且在该用户会话期间一直存在,假如有5000个用户,那么将会产生5000个HttpSession对象,每个HttpSession都需要分配一定的内存,如部分用户长时间不活动但还是继续保留这个Session的话,就极大的浪费了内存,也不合理的限制了最大用户数。
2、关键过程:
根本原因分析引起这个问题的根本原因是没有设置HttpSession的超时时间,导致即使会话长期不活动但系统还仍然保持这个会话,占用系统资源。
针对超时时间的设置,有两种方法可以解决这个问题,
(1) 在Servlet代码中,使用HttpSession对象的方法setMaxInactiveInterVal(int)设置一个会话维持非活动状态的最大秒数。代码如下:
public void doGet(HttpServletRequest req,HttpServletResponse res) throws
ServletException,IOException {
HttpSession session=req.getSession();
session.setMaxInactiveInterval(60);
}
(2).在web.xml文件内通过使用session-config标志设置,通过标志session-timeout可以定义所有非活动HttpSession对象存在的最大时间。
<session-config>
<session-timeout>60</session-timeout>
</session-config>
4、经验总结:预防措施和规范建议
以上两种方法都可以解决问题,第一种方法是将超时值用于特定的servlet,针对每一个Session进行单独设置,而第二种方法是应用于整个web应用程序,所有的Session都遵循这个共同的超时时间,根据不同的需要来选用这两种方法。如果同时使用了这两种方法对同一个Session设置了两个超时时间,那么将以较小的那个时间为准。
- 配置会话HttpSession的超时时间
- Tomcat会话超时的配置
- Tomcat会话超时的配置
- ssh连接会话超时时间的方法
- HttpSession会话状态的生命周期
- 一个严格的PHP Session会话超时时间设置方法
- Oracle EBS控制会话时间及超时
- 配置 CSocket 操作的超时时间
- Confluence 配置草稿保存的超时时间
- 配置session超时时间
- HttpSession会话部分内容
- HttpSession会话管理原理
- HttpSession服务器端会话技术
- HttpSession服务器端会话技术
- Filter配置会话超时跳转页面
- ASP.NET会话丢失,Session超时配置
- 会话超时
- 设置httpsession时间的各种方法
- canvas.drawText 以(cx,cy)为中心,写字
- 关于 把 session 保存 sql server 中 、 无法打开登录所请求的数据库 "ASPState"。登录失败。 用户 'sa' 登录失败。
- 程序员职业生涯探讨
- linux(debian)解决升级时Hash Sum mismatch错误
- lss _stack_start,%esp
- 配置会话HttpSession的超时时间
- STRING 大全
- Mysql技术内幕InnoDB存储引擎——事务&备份&性能调优
- MySQL表级锁与行级锁
- OpenCV对图像获取像素值方法总结
- Android语音识别
- hdu 1443 or ACM steps 2.2.2
- openGL开发之旅随记001
- oracle临时表