Управляемые bean-компоненты не были освобождены даже после того, как сессии недействительны - PullRequest
0 голосов
/ 29 июня 2011

У меня есть приложение JSF, обслуживаемое Tomcat 6, и каждый сеанс может получать bean-компоненты viewScoped, выделенные ему в области «сеанс» в качестве управляемого bean-компонента. Проблема заключается в том, что память, используемая для хранения этого компонента, НИКОГДА, кажется, не освобождается, даже после того, как сеансы провели часы в состоянии ожидания.

Есть ли способ заставить Tomcat освободить эту память после простоя сеанса в течение определенного промежутка времени (например, 10 минут)? Если нет, как насчет способа вручную освободить эту память программно? Или это одна из особенностей «управляемого компонента» в области «сеанс», которая сохраняется в памяти до тех пор, пока сервер не завершит работу, несмотря ни на что? Заранее спасибо!

Но bean-объекты viewScoped не могут быть освобождены. Потому что если щелкнуть ссылку на странице с истекшим сроком действия, журналы в консоли tomcat показывают, что UIViewRoot на стороне сервера все еще жив. Журналы: beforePhase-RESTORE_VIEW 1 afterPhase -RESTORE_VIEW 1 раз: 3 beforePhase-RENDER_RESPONSE 6 И память о серверном процессе немного не уменьшилась. Если сервер работает относительно долго. Реакция приложения очень медленная и кажется не очень надежной, например, не работает пагинатор и так далее. Даже при выключении сервера распечатка консоли: Ожидание освобождения 16 экземпляров (ей)

Кто-нибудь знает об этом?

1 Ответ

0 голосов
/ 29 июня 2011

Ваши управляемые bean-объекты в рамках сеанса не освобождаются, поскольку время сеанса не истекло.Вам необходимо указать приемлемое время ожидания для вашего сеанса в файле дескриптора развертывания (web.xml).Следующий пример в минутах.Через 10 минут сеанс будет признан недействительным, и ваши компоненты bean-объекта должны быть уничтожены.

<session-config>
      <session-timeout>10</session-timeout> 
</session-config>
...