2012-01-19 31 views
0

我有一个Tomcat 6.0的默认安装,我有一个应用程序将信息存储在会话变量中。几秒钟后会话发生变化:Java Servlets

似乎我的会话在短时间内不活动后失效。只要我每几秒钟浏览另一个页面,会话数据就在那里,但如果我停止点击大约半分钟,浏览器存储更改的会话ID。 (我已经使用Firebug证实了这一点,并且看到了与我的目标浏览器相同的IE8行为。)

为什么会发生这种情况?我的应用程序的web.xml指定了30分钟的会话,并且我拨打了session.setMaxInactiveInterval(60)以查看是否改变了任何内容,但似乎没有。

健全检查:

我的web应用程序的web.xml开始是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd" 
    version="2.5"> 
    <session-config> 
    <session-timeout>30</session-timeout> 
    </session-config> 

我的服务器的web.xml文件包含这些行:

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

回答

1

this,该方法你使用以秒为单位的输入,而不是分钟,所以你会让事情变得更糟。

至于其他方面,我会考虑使用会话的代码,因为web.xml片段看起来不错。

+0

你打钱。我分类的一个servlet就是这样做的。 – bdares

0

某些最新版本的Tomcat 6有一个名为“Session Fixation”的功能,它可以在您登录后更改会话ID。