2010-04-01 78 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或會話丟失,則會話實際上會丟失。