RENDER_RESPONSE занимает слишком много времени в шве


Я пишу приложение, используя JBOSS Seam с Richfaces. К сожалению, некоторые страницы загружаются очень долго, особенно когда я хочу показать около 100 строк (или более) в таблице.
Получение ответа от базы данных занимает около 2453 мс, так что это довольно хорошо. Однако фаза RENDER_RESPONSE занимает около 23750 мс, поэтому это неприемлемо. Объект, который я возвращаю, не имеет соединений EAGER.

Надеюсь, что кто-нибудь может мне помочь или подсказать, что еще я могу сделать, чтобы найти проблему.

Привет, Фрита PS. Здесь у вас есть журнал из моего приложения: 09:49:52,125 ИНФОРМАЦИЯ [[/my_aplication]] BEFORE - INVOKE_APPLICATION 5 - /my_aplication/Report.seam
09:49:54,578 ИНФОРМАЦИЯ [Отчет] Завершение создания отчета: 2453
09:49:54,578 ИНФОРМАЦИЯ [[/my_aplication]] ПОСЛЕ - INVOKE_APPLICATION 5 - /my_aplication/Report.seam
09:49:54,578 ИНФОРМАЦИЯ [[/my_aplication]] ДО - RENDER_RESPONSE 6 - /my_aplication/Report.seam
09:49:54,687 ИНФОРМАЦИЯ [Отчет] getResultList(): 1285314594687
09:49:54,687 ИНФОРМАЦИЯ [Отчет] getResultList(): 1285314594687
09:49:54,687 ИНФОРМАЦИЯ [Отчет] getResultList(): 1285314594687
09:49:54,687 ИНФОРМАЦИЯ [Отчет] getResultList(): 1285314594687
09:49:54,687 ИНФОРМАЦИЯ [Отчет] getResultList(): 1285314594687
09:49:54,718 ИНФОРМАЦИЯ [Отчет] getResultList() : 1285314594718
09:50:18,437 ИНФОРМАЦИЯ [Отчет] getResultList(): 1285314618437
09:50:18,437 ИНФОРМАЦИЯ [Отчет] getResultList(): 1285314618437
09:50:18,468 ИНФОРМАЦИЯ [[/my_aplication] ] ПОСЛЕ - RENDER_RESPONSE 6 - /my_application/Report .seam
09:50:18,890 INFO [Временной фильтр]

09:50:18,890 INFO [TimingFilter] Всего: 18258 мс dla: /my_aplication/ Report.seam


person Fryta    schedule 24.09.2010    source источник


Ответы (3)


Я вижу эту строку в вашем журнале:

getResultList(): 1285314594687

... повторяется довольно много. Что делает этот звонок? Он просто возвращает список, который был инициализирован в другом месте? Или он обращается к базе данных? Если в вызове есть какая-то логика, это может быть причиной вашего замедления.

person Shadowman    schedule 24.09.2010

Я предлагаю вам прочитать этот замечательный пост о том, как вы можете ускорить свой JSF/Seam/Richfaces приложение, написанное Дэном Алленом (автор книги "Шов в действии")

person Shervin Asgari    schedule 27.09.2010

Я почти уверен, что это происходит из-за ленивой загрузки связанных объектов. Поскольку в Seam встроена поддержка шаблона Open Session in View (который позволяет избежать LazyLoadingException), для каждой ленивой связанной сущности Hibernate обращается к базе данных. Вы можете переопределить getResultList (или создать собственный метод) и загрузить все необходимые объекты с помощью одного SQL-запроса

person Arthur Ronald    schedule 25.09.2010