2012-01-24 24 views
1

我已經部署在側OC4J一個servlet的應用程序。的setMaxInactiveInterval上OC4J是不準確的

我試圖用1分鐘後,用戶會話無效:

session.setMaxInactiveInterval(1 * 60); 

但實際情況是,它需要超過1分鐘(甚至可能達到1分半)會議被摧毀了。

這是一個執行問題,還是什麼?

回答

1

你似乎在檢查由等到HttpSessionListener#sessionDestoryed()被調用,而不是確切地後1分鐘實際發送HTTP請求到服務器的破壞。

會議毀滅是由間隔運行的後臺作業管理大多數的服務器,它可以每分鐘或以上,取決於服務器的品牌/版,配置和可能加載。該作業檢查所有打開的會話是否已過期,並相應地掃描已過期的會話。因此,只要客戶端沒有發送請求,會話銷燬就是,即時不會在會話過期時被調用。這個後臺作業不會每秒運行一次,而是CPU密集度太高。

但是,只要服務器檢索到帶有會話ID的請求,而會話仍存在於服務器內存中但已過期,就會立即調用會話銷燬。

所以,你要麼接受它,或者改變您的測試方法。