1


我使用带有 Richfaces 的 JBOSS Seam 编写应用程序。不幸的是,它的某些页面加载时间很长,尤其是当我想在 table 中显示大约 100 行(或更多)时。
从数据库获取响应大约需要 2453 毫秒,所以还不错。但是 RENDER_RESPONSE 阶段大约需要 23750 毫秒,所以它是不可接受的。我返回的对象没有 EAGER 连接。

希望有人可以帮助我或给出一些提示,我还能做些什么来找到问题。

问候,弗莱塔 PS。在这里你有我的应用程序的日志:09:49:52,125 INFO [[/my_aplication]] BEFORE - INVOKE_APPLICATION 5 - / my_aplication/Report.seam
09:49:54,578 INFO [Report] End generate report: 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 INFO [报告] getResultList(): 1285314594687
09:49:54,687 INFO [报告] getResultList(): 1285314594687
09:49:54,687 INFO [报告] getResultList():
120954449631 :54,687 信息 [报告] getResultList(): 1285314594687
09:49:54,718 信息 [报告] getResultList(): 1285314594718
09:50:18,437 信息 [报告] getResultList(): 1285314618437
09:50:18,437 信息 [报告] getResultList(): 1285314618437 信息 [[[报告]
18,46 /my_aplication]] 之后 - RENDER_RESPONSE 6 - /my_aplication/Report.seam
09:50:18,890 信息 [TimingFilter]

09:50:18,890 INFO [TimingFilter] Total: 18258ms dla: /my_aplication/ Report.seam

4

3 回答 3

1

我建议您阅读这篇非常棒的文章,了解如何加快Dan Allen(Seam in Action 的作者)编写的 JSF/Seam/Richfaces 应用程序

于 2010-09-27T10:45:02.887 回答
1

我在您的日志中看到这一行:

getResultList(): 1285314594687

...重复了很多次。这个调用有什么作用?它只是返回一个在其他地方初始化的 List 吗?还是它正在调用数据库?如果调用中涉及任何类型的逻辑,那可能就是您的减速发生的地方。

于 2010-09-24T19:19:52.170 回答
0

我很确定它会发生,因为您正在延迟加载关联实体。因为 Seam 内置了对 Open Session in View 模式的支持(这避免了 LazyLoadingException),所以对于每个惰性关联实体,Hibernate 都会命中数据库您可以覆盖 getResultList(或创建您的自定义方法)并使用单个加载所有需要的实体SQL查询

于 2010-09-25T03:10:02.427 回答