2012-01-24 20 views
1

我已经部署在侧OC4J一个servlet的应用程序。的setMaxInactiveInterval上OC4J是不准确的

我试图用1分钟后,用户会话无效:

session.setMaxInactiveInterval(1 * 60); 

但实际情况是,它需要超过1分钟(甚至可能达到1分半)会议被摧毁了。

这是一个执行问题,还是什么?

回答

1

你似乎在检查由等到HttpSessionListener#sessionDestoryed()被调用,而不是确切地后1分钟实际发送HTTP请求到服务器的破坏。

会议毁灭是由间隔运行的后台作业管理大多数的服务器,它可以每分钟或以上,取决于服务器的品牌/版,配置和可能加载。该作业检查所有打开的会话是否已过期,并相应地扫描已过期的会话。因此,只要客户端没有发送请求,会话销毁就是,即时不会在会话过期时被调用。这个后台作业不会每秒运行一次,而是CPU密集度太高。

但是,只要服务器检索到带有会话ID的请求,而会话仍存在于服务器内存中但已过期,就会立即调用会话销毁。

所以,你要么接受它,或者改变您的测试方法。