Тайм-аут сеанса в Java EE

Каким образом можно определить время ожидания сеанса в Java EE? Я смотрю за пределы очевидных способов, таких как установка времени ожидания сеанса в web.xml или HttpSession.setMaxInactiveInterval().

В настоящее время я просматриваю приложение Java EE, но не могу найти ничего, связанного с определением времени ожидания сеанса. Веб-приложение находится в Weblogic. Я предполагаю, что, поскольку нет определения времени ожидания сеанса, срок действия сеанса никогда не истечет.


person Andreas Tasoulas    schedule 10.02.2011    source источник


Ответы (2)


Поскольку вы ищете, как можно ограничить время сеанса в Weblogic, я могу добавить

TimeoutSecs в weblogic.xml или проверьте любой момент в коде, где сеанс завершается session.invalidate() при выходе из системы.

Кстати, он не будет бесконечным.

В Weblogic по умолчанию в web.xml (если не указано значение) используется значение TimeoutSecs в weblogic.xml, которое по умолчанию 3600 секунд, т.е. 60 минут

person JoseK    schedule 10.02.2011
comment
Увидел это в конце долгого дня и подумал, что схожу с ума. :) - person cwash; 02.09.2011

Не связанные с весной:

  • Управляйте файлами cookie самостоятельно, response.setHeader("Set-Cookie", cookiestring);. Это атрибут expires, который управляет временем ожидания сеанса. Это переопределяет любой контейнер сервлетов или web.xml по умолчанию, но может быть переопределен HttpSession#setMaxInactiveInterval() в любом случае в коде Java.

  • Настройте значение по умолчанию на уровне контейнера сервлетов. В Tomcat, например, по атрибуту maxInactiveInterval элемента <manager>. Это можно переопределить с помощью <session-timeout> в web.xml и HttpSession#setMaxInactiveInterval() в коде Java в любом случае.


Обновление в соответствии с обновлением комментариев и вопросов:

Если не указано, будет использоваться тайм-аут по умолчанию, управляемый контейнером сервлетов. Обычно это 30 минут (что верно для Tomcat и клонов). Таким образом, сеанс истечет через 30 минут после последнего запроса, отправленного клиентом в сеансе. Кроме того, когда клиент закрывает и снова открывает экземпляр браузера или очищает файлы cookie, будет создан новый сеанс (срок действия старого сеанса истечет после 30-минутного тайм-аута по умолчанию).

person BalusC    schedule 10.02.2011
comment
Время ожидания сервера отличается от времени ожидания клиента. Или я не понял вопроса :-) - person Bozho; 10.02.2011
comment
@Bozho: если время сеанса истекло на сервере, клиент все равно не сможет получить доступ к тому же сеансу, и наоборот. - person BalusC; 10.02.2011
comment
Я просматриваю код. Я также проверил файлы cookie, но у них нет атрибута expires. Используемый сервер приложений — Weblogic. - person Andreas Tasoulas; 10.02.2011
comment
Так этот вопрос, в конце концов, является фасадом конкретной проблемы, с которой вы боретесь? Почему бы просто не задать вопрос о проблеме напрямую? Что касается атрибута expires, то он по умолчанию опущен (это означает, что срок действия сеанса на стороне сервера истекает в соответствии с настройками сервера по умолчанию (обычно 30 минут) или когда клиент закрывает/перезапускает браузер). - person BalusC; 10.02.2011
comment
Вы правы, я прошу прощения за то, что не был достаточно конкретным с самого начала. Я собираюсь отредактировать вопрос так, как он должен был быть сформулирован. (Я нашел решение проблемы, но то, как оно было изначально сформулировано, предполагало ложные предположения, поэтому было бы практически невозможно, чтобы кто-то дал ответ, который я искал). - person Andreas Tasoulas; 10.02.2011
comment
Хорошо, в будущем постарайтесь быть более конкретным. - person BalusC; 10.02.2011