2010-04-01 69 views
1

我遇到java会话问题。Java,Tomcat,Sessions - JSessionId消失

我正在开发一个简单的网络应用程序,我必须使用会话和会话属性。一切都很好,直到我关闭我的浏览器。当我关闭浏览器时,JSessionId消失。 这里是我的代码:

request.getSession().setMaxInactiveInterval(30*60); //it's 30 minutes 
request.getSession().setAttribute("someinteger", 10); 

它的伟大工程,但是当我关闭浏览器,然后重新打开它,我无法找到JSESSIONID(之前我关闭浏览器,我可以在“localhost”的部分找到它)。奇怪的是我仍然可以找到“someinteger”cookie。问题是什么?我究竟做错了什么?

我使用这个,太:link text,它表明,JSESSIONID cookie过期: “会话”,并在30分钟内

在此先感谢 “someinteger” 到期。

回答

4

会话cookie不会在浏览器重新启动时持续存在。因此,当您重新打开浏览器时,JSESSIONID Cookie不会存在。

+0

我不知道。谢谢! – Bob 2010-04-01 21:21:04

+0

澄清:request.getSession()。setMaxInactiveInterval(30 * 60);设置服务器端超时,它不影响jsessionId的cookie超时 – jayshao 2010-04-02 03:48:51

1

其实,原因是在web.xml中定义的会话超时可能仍然设置为默认:

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

会话cookie不同的浏览器会持续重新启动,如果浏览器已配置为(全默认做)。带有JSESSIONID的cookie不是浏览器的特殊cookie,它只是另一个cookie。

如果你看看cookie可以看到它被设置为过期。 Cookie过期和持久性与会话超时无关。除了cookie是将浏览器连接到浏览器的。

如果cookie或会话丢失,则会话实际上会丢失。