Что заставляет вас думать, что sessionDestroyed
не вызывается , когда сеанс истекает? Или, другими словами, как вы интерпретируете тот факт, что его вообще называют?
Сервлет будет обрабатывать достоверность сеансов по-своему, включая время ожидания сеанса, и когда он определит, что сеанс больше не является действительным, он вызовет ваш метод. Однако я не думаю, что какие-либо сервлеты гарантируют какую-либо конкретную своевременность в этом отношении; Насколько я понимаю, это немного похоже на сборку мусора в том смысле, что она гарантированно произойдет в какой-то момент , но не обязательно в самом раннем возможном случае, когда сеанс станет пригодным для уничтожения.
В любом случае кажется почти уверенным, что сервлет делает то, что вы хотите - видя, что время сеанса истекло, и вызывая соответствующий метод - единственный вопрос в том, увидите ли вы это точно через 60 секунд после последний запрос или чуть позже. Я бы сказал, что в общем случае вы не должны полагаться на точные моменты времени, когда этот метод вызывается; конечно, используйте его для очистки ресурсов, но не для чего-то вроде корректности программы (в любом случае вы получите IllegalStateExceptions
, если вызовете методы в недопустимом сеансе). Если вы чувствуете, что действительно должны полагаться на это, возможно, объясните, что вы делаете, чтобы другие могли предложить более подходящие способы достижения этого.