我想搞一个关于ejb的讨论。欢迎大家进来发言。(我抛了一块砖,就等大家的玉了)(300分)

小猪

Unregistered / Unconfirmed
GUEST, unregistred user!
最近刚刚结束了一个失败的ejb的项目,
颇有些无奈的感觉。碰到的问题主要是
性能问题。硬件已经是超豪华配置了(sun小型机),
但仍然觉得性能不能满足要求,在访问量稍大的时候
就会出现让人不能忍受的响应时间延迟。
以下是一些基本的情况,我正在整理总结文档,以后会发上来。
在该项目中,大量使用了entitybean和sessionbean,而entitybean全部
采用cmp方式(这里可能也是影响性能的一个因素),前台通过servlet调用
ejb的方式,servlet负责页面生成,ejb负责业务逻辑,应该说在逻辑分离上是
比较成功的。目前我想到的一个可能影响性能的因素是我们在servlet调用ejb后
经常是直接传回一个entitybean,按照sun的文档表明,这会在很大程度上影响性能,
但是,即使不需要返回结果(或者只要返回成功或失败的简单结果)的sessionbean
调用,其性能也是无法让人满意的。当然,sessionbean中会有对相关entitybean的调用,
我们并没有在sessionbean中直接使用sql操作数据库,而是全部通过entitybean来实现,
这似乎也在一定程度上影响了性能。
(果然是快砖吧?[:D][:D][:D])
欢迎大家把自己在ejb上成功或者失败的经验、教训都提出来,希望能够整理成一篇有
参考价值的文档,相信这对大家都会有很大的帮助。
 
还在学习EJB呢。:(
 
不知道EJB现在有没有实际应用?
 
我不就是在实际应用吗?[:)]
 
我是说比较成功的应用[:)]
 
性能如此低劣吗?
 
感觉有点像发水了,[:(]
 
着有一片讨论,还挺热烈的:
http://www.delphiuser.com/club/bbs/bbsView.asp?announceID=955293
 
[blue]>>大量使用了entitybean和sessionbean,而entitybean全部[/blue]采用cmp方式(这里可能也是影响性能的一个因素).
这个因素不容忽视。
CMP 对于 bean 开发人员是最易于创建的,
但对于 EJB 服务器来说,却是最难以支持的。这是因为容器
要自动处理所有用于使 bean 的状态与数据库同步的逻辑。这
就意味着 bean 开发人员不需要编写任何数据访问逻辑,而 EJB
服务器应该自动负责所有持续要求 -- 对于任何供应商都是一个
很高的要求。大多数 EJB 供应商都支持关系数据库的自动持续,
但支持级别却各不相同。某些提供非常复杂的对象到关系映射,
而某些供应商却非常有限。
[blue]>>servlet调用ejb后经常是直接传回一个entitybean[/blue]
我觉得这样的确比较欠妥,因为SERVLET需要的仅仅是结果数据,供界面逻辑之用。
[blue]>>没有在sessionbean中直接使用sql操作数据库,而是全部通过entitybean来实现[/blue]
无数次的SQL数据库操作是一个多大的消耗,如果在一个持续的entitybean中,其后果。。。。
个人看法,大家继续~~[8D]

 
>>>>大量使用了entitybean和sessionbean,而entitybean全部采用cmp方式(这里可能也是影响性能的一个因素).
>>这个因素不容忽视
用EJB2.0,cmp支持一种QL语言,同时有isDirty测试,应该性能有改进。有谁做过
EJB2.0的,可以谈谈
>>>>没有在sessionbean中直接使用sql操作数据库,而是全部通过entitybean来实现
>> 无数次的SQL数据库操作是一个多大的消耗,如果在一个持续的entitybean中,其后果。。。。
有些数据实体用stateless session EJB也是可以的
>>>>servlet调用ejb后经常是直接传回一个entitybean
>> 我觉得这样的确比较欠妥,因为SERVLET需要的仅仅是结果数据,供界面逻辑之用。
可以从Session EJB直接返回View。最近做了点东西比较怪,用一个简单的script描述
View,然后生成View的结构,包括两个扩展标记和一个View对象。JSP中直接使用扩展标
记,没有任何代码。
 
小猪你分析得很不错啊!
我估计使用CMP是导致这种情况,最主要的原因.
尽量使用无状态的sessionbean,这样用的内存少
一些SQL操作可以存贮过程或触发器,放在DB上,这样执行效率可以提高很多.
以上一点是本人的拙见
本人对J2EE也很高兴趣,希望大家能多多和我切磋.
另外,如果你有没有开发的一些资料或者文档,能不能给我看看
我最近可能也要搞一个这个项目
 
首先我申明,我还没做过系统开发,只是就我学过的东西说说想法。
我觉得最大速度障碍是返回entitybean,相当于一个大的纪录集啊!ejb的操作是将表于
entitybean对应,即变成一个对象。然后这些对象都将在队列中等待(当然需要你先初
始化才行),虽然可以复用但是,一次复用也要产生一个可能类似指针的复本。
 
对于简单映射关系的entitybean,一个bean的实例应该只对应一条记录的,再大
也大不到哪里去的,关键是entitybean的传递本身是一项及其昂贵的工作,才会
导致性能的下降。
 
to 小猪
你有比较好的ejb的中文教材吗?推荐一本,最好在某个地方有得下载。呵呵
英文得看得太费尽,虽然中文得翻译可能不准。但是起码我可以让我弄个半懂,然后再去看
英文得。
多谢
 
我手上的两本主要参考书:
《Enterprise JavaBeans》Richard Monson-haefel 著
中国电力出版社
《IBM Websphere电子商务解决方案》人民邮电出版社
电子版的参考书我也没有。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部