2010-09-24 5 views
1


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

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

Greetings, Fryta PS. Вот вам войти из моего приложения: 09: 49: 52,125 INFO [[/ my_aplication]] ДО - INVOKE_APPLICATION 5 -/ my_aplication/Report.seam
09: 49: 54578 INFO [Отчет] Конец производящая отчета: 2453
09: 49: 54578 INFO [[/ my_aplication]] ПОСЛЕ - INVOKE_APPLICATION 5 -/ my_aplication/Report.seam
09: 49: 54578 INFO [[/ my_aplication]] ДО - RENDER_RESPONSE 6 -/ my_aplication/Report. шов
09: 49: 54687 INFO [Отчет] getResultList(): 1285314594687
09: 49: 54687 INFO [Доклад] getResultList(): 1285314594687
09:49:54, 687 INFO [Доклад] getResultList(): 1285314594687
09: 49: 54687 INFO [Доклад] getResultList(): 1285314594687
09: 49: 54687 INFO [Доклад] getResultList(): 1285314594687
09: 49: 54718 INFO [Доклад] getResultList(): 1285314594718
09: 50: 18437 INFO [Доклад] getResultList(): 1285314618437
09: 50: 18437 INFO [Доклад] getResultList(): 1285314618437
09: 50: 18468 INFO [[/my_aplication]] ПОСЛЕ - RENDER_RESPONSE 6 -/ my_aplication/Report.seam
09: 50: 18,890 INFO [TimingFilter]

09: 50: 18890 INFO [TimingFilter] Всего: 18258ms дла:/my_aplication/ Report.seam

ответ

1

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

getResultList(): 1285314594687 

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

0

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