设立tomcat的session有效时间

设置tomcat的session有效时间
[来自]http://apps.hi.baidu.com/share/detail/24157223

1. 在server.xml中定义context时采用如下定义:

<Context path="/livsorder" docBase="/home/httpd/html/livsorder"  
defaultSessionTimeOut="3600" isWARExpanded="true"  
isWARValidated="false" isInvokerEnabled="true"  
isWorkDirPersistent="false"/>

2. 在web.xml中通过参数指定:

<session-config>
<session-timeout>30</session-timeout>  
</session-config>

其中30表示30分钟

3. 在程序中通过servlet api直接修改
HttpSession ses = request.getSession();
ses.setMaxInactiveInterval(10);
设置单位为秒,设置为-1永不过期。

4.在当前应用下的web.xml 文件中加入

<session-config>
<session-timeout>30</session-timeout>  
</session-config>

其中30表示30分钟


附录:

1)超时时间的设定
      tomcat的会话超时可以在多个级别上设置:tomcat实例级别、Web应 用级别、servlet级别以及运行时Context代码级别。

      较低级别的设定会覆盖较高级别的设定。

      一般常用的是在前面两个级别上设置,分别在 /conf/web.xml和/webapps/yourapp/WEB-INF/web.xml,形如:

      <session-config>

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

      </session-config>

     单位是分钟,默认是30分钟,这里我们修改为1个小时。

2)重启时保持会话
    在关闭Tomcat实例/取消Web应用部署时,缺省会把当前的活动会话保存到硬盘上,并在重启启动/部署 时在把会话从硬盘上加载到内存中。
    文件保存在各目录下的SESSIONS.SER中。有时可能会话中保存了敏感信息,或者不希望使用这个特 性,可以配置Context.xml文件关闭这个选项。
    配置 manager.pathname == ""即可,形如:
                <Manager pathname="" />  

不过话说Tomcat关于会话的设定也不甚直观,在其文档中明确的说 明,Manager组件的工作就是session manager,可以设置maxInactiveInterval,而web.xml中有可以设定 session-timeout。再加上全局、应用,不同地方定义的超时时间撞到一起时,又有优先级的问题,处理有些混乱。

[来自]http://news.newhua.com/news1/Skills_System/2009/319/0931910354983H11G1FF6GI5JBEJ371B4H62BF1FD1A8IK39F7B25582.html

由于session值之前没有设置,以至于刚登录的网站,不到一分钟就超时了,总结了一下,原来是session过期的原因,以下是设置session时间的3个方法:

1. 在tomcat——>conf——>servler.xml文件中定义:

<Context path="/test" docBase="/test"  
  defaultSessionTimeOut="3600" isWARExpanded="true"  
  isWARValidated="false" isInvokerEnabled="true"  
  isWorkDirPersistent="false"/>
defaultSessionTimeOut="3600"



2. 在web.xml中定义:

<session-config>  
<session-timeout>20</session-timeout>  
</session-config>



3. 在程序中定义:

session.setMaxInactiveInterval(30*60);



设置单位为秒,设置为-1永不过期

不知道这种设置会不会真正地起到作用的哦!