Servlets OC4J上的setMaxInactiveInterval是';不准确

Servlets OC4J上的setMaxInactiveInterval是';不准确,servlets,session-timeout,oc4j,Servlets,Session Timeout,Oc4j,我在oc4j端部署了一个servlet应用程序 我试图在1分钟后使用以下命令使用户会话无效: session.setMaxInactiveInterval(1 * 60); 但实际情况是,在会话被破坏之前,它需要超过1分钟(可能达到1分半) 这是一个实现问题,还是什么问题?您似乎在检查销毁,等待调用HttpSessionListener#sessionStoryed(),而不是在整整一分钟后向服务器发送HTTP请求 会话销毁在大多数服务器上由后台作业管理,后台作业每隔一段时间运行一次,可以是每

我在oc4j端部署了一个servlet应用程序

我试图在
1
分钟后使用以下命令使用户会话无效:

session.setMaxInactiveInterval(1 * 60);
但实际情况是,在会话被破坏之前,它需要超过1分钟(可能达到1分半)


这是一个实现问题,还是什么问题?

您似乎在检查销毁,等待调用
HttpSessionListener#sessionStoryed()
,而不是在整整一分钟后向服务器发送HTTP请求

会话销毁在大多数服务器上由后台作业管理,后台作业每隔一段时间运行一次,可以是每分钟或更长时间,具体取决于服务器品牌/版本、配置以及可能的负载。此作业检查所有打开的会话是否已过期,并相应地清理过期的会话。因此,只要客户机没有发送请求,就不会在会话过期的同一秒立即调用会话销毁。此后台作业不是每秒都运行,它会占用大量CPU

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


因此,您要么接受它,要么改变您的测试方法。

您似乎是在等待调用HttpSessionListener#SessionStoryed()来检查销毁情况,而不是在整整一分钟后向服务器发送HTTP请求

会话销毁在大多数服务器上由后台作业管理,后台作业每隔一段时间运行一次,可以是每分钟或更长时间,具体取决于服务器品牌/版本、配置以及可能的负载。此作业检查所有打开的会话是否已过期,并相应地清理过期的会话。因此,只要客户机没有发送请求,就不会在会话过期的同一秒立即调用会话销毁。此后台作业不是每秒都运行,它会占用大量CPU

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

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