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