null

Время жизни http-сессии в Liferay

Пост самому себе на заметку :) 

Сабж в портале конфигурируется весьма нетривиальным образом. Казалось бы, во всех веб-приложениях на Java время жизни http-сессии задаётся в дескрипторе развёртывания (WEB-INF/web.xml) посредством стандартной конструкции:

<session-config>
	<session-timeout>30</session-timeout>
</session-config>

Где "30" - это интервал в минутах, по истечении которого (при отсутствии активности пользователя) контейнер уничтожит сессию. Но, как в итоге выяснилось, всё не так просто. Выставив этот параметр в 1440 (сутки), дабы не терзать несчастных пользователей одного из наших порталов постоянными "отсыханиями" сессии, через 30 минут я получил стандартное оповещение лайфрея о необходимости сохранения изменений, которые я, цитирую, "могла бы внести" в связи с потерей сессии.

На счастье, есть гугл и Liferay Wiki, которые в очередной раз нас спасли. Как выяснилось, для того, чтобы портал не терзал пользователей сообщениями о потере сессии, нужно, вместо изменения web.xml, выставить дополнительные параметры в конфиге самого портала (файл portal-ext.properties):

Во-первых,

session.timeout=1440

для того, чтобы сессия не отваливалась через полчаса;

во-вторых, опционально,

session.timeout.warning=0

для того, чтобы вообще убрать нафиг оповещение об отсыхании сессии (пользователи всё равно завтра браузер будут перезапускать);

в-третьих, потребовалось снести конфигурацию сессии из web.xml, т.к. при её наличии настройки из portal-ext.properties не применяются.

После этого всё заработало так, как нужно.

UPDATE:

Как выяснилось, не всё :)

Тем, кто пишет для своих порталов приложения на базе ICEFaces, помимо, собственно, портала, нужно задать время жизни сессии непосредственно в конфигах приложения. Делается это посредством добавления в web.xml приложения такого элемента:

<context-param>
        <param-name>com.icesoft.faces.connectionTimeout</param-name>
        <param-value>86400000</param-value>
</context-param>

где 86400000 - это время жизни сессии при отсутствии активности со стороны пользователя (в милисекундах, в данном примере - сутки).

Вот теперь оно действительно заработало нормально :)

Коротко о себе:

Работаю ведущим программистом в компании Tune IT и ассистентом кафедры Вычислительной техники в Университете ИТМО .

Занимаюсь проектами, связанными с разработкой разного рода веб-приложений (порталы, CRM-системы, системы электронного документооборота), а также, в рамках научной работы на кафедре, изучаю возможности применения семантического анализа в задачах САПР.