近半年的项目实践让我们注意到了seam2.0.2的conversation的性能问题。测试人员抱怨系统速度慢的时候,我们一开始以为是由于数据库查询导致的性能问题。但是经过各方面排查,我们发现一个不做数据库操作的简单页面,就算是按照前文《优化richfaces,给seam提速》操作后,同样会很慢。于是我们开始怀疑起 seam本身了。一个无意中的试验发现,我把一个以前放在conversation scope内的组件换成 page scope后,速度一下子提高了五六倍。今天通过对日志的分细,证实了我的感觉。
我写了一个timefilter,记下服务器从接到http request到生成后http response后总共花掉了多少时间。被测试的action是一个普通的java bean,共有二十多个property, 里面有一个业务方法。在不改变其它代码,只改变这个java类前的annotation, 把 scope 从conversation改成page后,测试十次,page scope时要比conversation时快5到10倍!这个测试结果确实是非常地让我惊讶!conversation scope的组件到底有什么特殊的呢?
为了能够观查到seam内部的运作情况,我把org.jboss的log设成debug级别的,现在点一下页面,一个post->redirect->get,在使用page scope时会产生 1 万多行日志,而conversation scope时居然会产生 近 3 万条日志!光从这个日志的数目就可以看到 conversation 在背后不只是做了一点点工作呀!再仔细对比两者的日志,会发现,conversation scope里会多出许多处理事件的日志:instantiating Seam component: org.jboss.seam.core.events 。这句日志在conversation时出现了 3630次,而 page scope时只出现了 1464次。conversation的日志里多出了大量如下日志:
2008-06-24 14:23:32,592 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preRemoveVariable.supplierSearchAction.supplierName
2008-06-24 14:23:32,592 DEBUG [org.jboss.seam.Component] instantiating Seam component: org.jboss.seam.core.events
2008-06-24 14:23:32,592 DEBUG [org.jboss.seam.Component] initializing new instance of: org.jboss.seam.core.events
2008-06-24 14:23:32,592 DEBUG [...]
分享到:
相关推荐
SeamCarving的C++实现代码,使用opencv库。包含完整项目工程及测试图像,可直接使用
seam_carving代码实现 图像缩放
NULL 博文链接:https://yuexiangcheng007-sina-com.iteye.com/blog/444386
7 The conversation: Seam's unit of work 8 Understanding Java persistence 9 Seam-managed transactions and persistence 10 Rapid Seam development Part 4 – Sinking the business requirements 11 Securing ...
JBOSS_SEAM配置
seam in action seam in action seam in action seam in action seam in action seam in action seam in action
Seam 是一种业级 企 Java 的应规用程序框架。它的灵感源自下列原 : 只有一种“工具” Seam为 应 业务业业 义 种统 组 你的 用程序中所有的 定 了一 一的 件模型。 Seam组件可能是 态义 关关 态 有状 的,包含与几...
seam介绍
seam级联菜单例子
JBoss Seam JBoss Seam JBoss Seam
seam下一代web开发框架
seam资料seam资料seam资料seam资料seam资料seam资料seam资料seam资料
seam carving的相关代码实现
seam 中文文档 pdf 格式 JSF+EJB3.0快速开发框架Seam的中文版向导。。。
为一个类定义一个Seam组件。所有Seam组件都需要该注解。 @Scope @Scope(ScopeType.CONVERSATION) 定义默认的组件上下文。可以定义的值由 ScopeType 枚举:EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, ...
Jboss Seam中文参考手册,通过大量的实例详细介绍seam的使用
Seam2.10安全API为你使用Seam开发的应用程序提供了大量与安全认证相关的特性,包含了以下几块: • 安全验证 - 一个可扩展的、基于JAAS的安全验证层,允许用户to authenticate against any security provider • ...
Jboss Seam in ActionJboss Seam in ActionJboss Seam in ActionJboss Seam in ActionJboss Seam in Action
JBOSS SEAM组件中文手册 Seam_2.0_Reference_zh_CN