bang,请教一下ejb框架和spring.

04-10-05 dabb
ejb确实提供了一个容易开发的分布式架构,也是因为它是分布架构决定它有着很好的可伸缩性。据个人对ejb和spring的理解,这也是它仅有的优势,对比spring等轻量级容器。但对于很大一部分的应用,可伸缩性完全可以通过对整个基于spring的应用程序来cluster实现,起码对于我来说没碰到过需要对一个应用的各个部分进行分布部署来实现伸缩性。而ejb的开发确实有很多烦人的事情,主要是因为它和容器绑定的太死了。且不说它的可测试性,oo设计方面等的限制(最近看了一个ejb3.0的faq,ejb3。0也是朝这个方向发展,而这些spring基本上现在都已经实现了),就说一个典型的问题,我最近在整以前的一套ejb程序(web通过remote接口调用的方式),发现对于一些web端和ejb端都统一的应用系统常量管理的很混乱。一般通过通过一张数据库表(我们叫标准代码表)来集中存储这些应用系统的常量。对于纯web系统可以在系统启动的时候把这些数据cache起来。但这些系统常量对于web和ejb端都是需要的,那在ejb端该如何有效的cache这些数据呢?通过entity bean的cache机制,或则通过jndi来存储,如果系统要分布部署,那么各个应用模块就需要通过remote调用这些cache起来的数据,或则在每个模块都部署一个同样的数据来实现。不知道bang有什么好办法对于这个问题?谢谢
              

dabb
2004-10-06 12:03
我现在先用jndi来存储这些信息。但不能避免每次通过jndi查找开销

刑满释放一周年
2004-10-09 12:15
用支持cluster的cache工具,例如oscache,他可以使用jms来做cache之间的同步。

banq
2004-10-10 10:34
>那在ejb端该如何有效的cache这些数据呢?

通过无状态Bean的ejbCreate构造EJB类变量来Cache这些数据。

其实,使用EJB最大的瓶颈是:编制程序时,需要以多台分布式思维来想像程序,但是也不能每个EJB都remote,建议程序员编制时全部local,然后,由cluster设计师来调整remote和cluster。

dabb
2004-10-11 10:44
>>由cluster设计师来调整remote和cluster

能不能具体说一下呢?

按个人理解,remote和local调用的方式在编码上有比较大的不同,我还想不出有效的办法来用最小的编码量来进行方便的remote和local之间的切换。我原来做的是同一个模块之间是local,不同模块之间是remote,不同层(web,ejb)之间也是remote。发布的时候如果想实现local的方式,就打包在一起,然后利用服务器的optismistic 特性(比如weblogic提供call-by-reference)来避免remote的开销。

不知道bang有没有更好的办法?谢谢

猜你喜欢
2Go 1 2 下一页