Есть ли какой-либо путь к Java servlet/jsp для определения тайм-аута сессии веб-сервера (в секундах, минутах, и т.д....)? Я пытался смотреть в API HttpSession и Системы, но не видел свойства для определения тайм-аута сессии веб-сервера. Я знаю, что это значение установлено в web.xml, но я разрабатываю библиотеку Java, которая должна определить это через код.
Примечание: Я разрабатываю для универсального веб-сервера и не могу полагаться на поставщика определенные расширения.
HttpSession.getMaxInactiveInterval
предоставляет это значение
int getMaxInactiveInterval ()
Возвращает максимальный временной интервал в секундах, в течение которого контейнер сервлета будет держать этот сеанс открытым между доступами клиентов. После через этот интервал контейнер сервлета аннулирует сеанс. В максимальный временной интервал может быть установлен с помощью setMaxInactiveInterval метод.
Возвращаемое значение, равное нулю или меньше, означает, что время ожидания сеанса никогда не истечет.
Возвращает: целое число, определяющее количество секунд, в течение которых этот сеанс остается открытым между клиентскими запросами.
При использовании сервлета:
int timeoutInSeconds = request.getSession().getMaxInactiveInterval();
При использовании JSP:
<p>Timeout in seconds: ${pageContext.session.maxInactiveInterval}</p>
Вы можете вызвать getMaxInactiveInterval для объекта сеанса.
Тайм-аут сеанса определяется временем простоя, поэтому невозможно узнать, когда он истечет.
Однако вы можете рассчитать следующий возможный тайм-аут, предполагая, что к сеансу нет доступа,
Date expiry = new Date(session.getLastAccessedTime() + session.getMaxInactiveInterval()*1000);