2011-02-08 388 views
18

为Tomcat发送的JSESSIONID Cookie为servlet会话设置过期日期的最佳方式是什么?JSESSIONID在Tomcat中过期日期的Cookie

默认情况下,Cookie的过期日期似乎是'会话',这意味着只要浏览器重新启动,会话就会在客户端中消失。但我希望在浏览器重新启动后保持打开状态12小时(然后会相应地在服务器中配置会话超时)。

有什么方法可以在Tomcat中设置过期日期,例如:使用一些配置选项或扩展模块?还是有一种可靠的方法来设置使用Servlet过滤器JSESSIONID的到期日期?

+0

喜添,我陷入了类似的问题。您选择了哪种解决方案,并且您在尝试实现目标方面取得了成功,请大家帮忙! – Ashish 2011-03-15 13:31:50

回答

51

我知道这是一个老问题,但如果其他人正在寻找这样的信息:

在Servlet的3.0,这可以简单地在web.xml中指定:

<session-config> 
    <session-timeout>525600</session-timeout> 
    <cookie-config> 
     <max-age>31536000</max-age> 
    </cookie-config> 
</session-config> 
+0

我是。谢谢。 – 2012-07-20 05:22:42

-2

如果你想会话12小时后失效和生存服务器重新启动,将它添加到你的web.xml:

<session-config> 
    <session-timeout>720</session-timeout> 
</session-config> 

Tomcat的默认配置,使他们生存的应用程序重新启动,以连载的会话。请参阅http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html#Restart%20Persistence

+5

不幸的是,的唯一影响是服务器将会话存储了12小时。但是,在浏览器中,Cookie仍然没有过期日期,因此只要浏览器关闭就会消失。 – 2011-02-08 13:13:04

1

我不认为可以在不更改Tomcat代码的情况下执行所需操作。

但请注意,它可能有一个令人讨厌的副作用:如果用户启动一个会话并保持活动十二小时,其会话超时将相应更新(超时将在每个请求更新),但其饼干获胜那么即使他在这段时间内一直处于活动状态,用户将在12小时后失去会话。