Программно определить тайм-аут сеанса 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 для вашего объекта сеанса.