2010-01-08 3 views
0

У меня возникают проблемы с размером моих сеансов с моим веб-приложением, основанным на структуре Jboss Seam Framework. Я использую MessAdmin для расследования, и он сообщает, что как только пользователь входит в систему, их размер сеанса превышает 50KB до 55MB (ouch). Это кажется сумасшедшим, так как я сохраняю очень мало объектов в областях разговора/сеанса.Размер сеанса в Java EE/Seam Application

Выход из MessAdmin затрудняет определение причины. Я надеюсь, что кто-то с большим опытом работы с этим инструментом сможет указать мне в правильном направлении.

Вот результат:

alt text http://locuslive.com/webdrive/messadmin1.png

alt text http://locuslive.com/webdrive/messadmin.png

+0

@ Damo Hi Damo, настройте javax.faces.STATE_SAVING_METHOD для клиента и снова просмотрите свой журнал –

+0

Спасибо, но это не меняет размер. Я также попытался сжать состояние безрезультатно. См. Комментарий ниже с помощью темы old-ish Seam на эту тему. – Damo

ответ

0

выглядит достаточно просто: Существует несколько объектов в этом списке с размером, превышающим 50 МБ, а те из них, вы нужно избавиться.

Ваши объекты приложения (Task List any) могут быть не большими, но если какой-либо из них содержит ссылку на один из этих больших объектов, который также будет втянут в ваш сеанс. Вам нужно пройти через ваши объекты приложения с помощью тонкой зубной гребенки, чтобы отсеять любые ссылки на любой из объектов, упомянутых в этой распечатке, особенно если они не являются вашими другими объектами приложения. Может быть целесообразно отметить такие ссылки (поля) как transient, а не избавиться от них напрямую, но я не уверен, что это будет иметь желаемый эффект.

Просто, чтобы сделать вещи более понятными: MessAdmin упоминает кучу больших объектов, но некоторые из них, вероятно, являются вашими объектами приложения и сами по себе не очень большие, не потому ли, что они получают доступ к чему-то другому, объект приложения и большой.

+0

Спасибо за быстрый ответ (и немного страшный аватар - «вот Джонни!») - Извините, мне нужно развернуть данные. См. Новый PNG. Общий размер сеанса составляет около 50 МБ, но несколько объектов сообщают, что они имеют этот размер. Это как-то связано с разговором по швам, и у меня нет никаких объектов поблизости от этого размера. – Damo

+0

Я видел это! Но я не думаю, что на этом сеансе есть что-то, что вы сами не поместили (вы можете поэкспериментировать с этим, если хотите). Я говорю, что (по крайней мере) один из объектов, которые вы помещаете в сеанс, имеет ссылку на какой-то очень большой объект, который вы не намерены вставлять туда. –

+0

EntityManager и AjaxStateHolder выглядят как вероятные кандидаты для ссылки без уважительной причины в ваших объектах. –

1

Объяснение общих объектов можно найти в [документации MessAdmin] [1]

[1]: http://messadmin.sourceforge.net/#[[HttpSession размер]]