关于instance pool的疑问

04-09-12 jamesdusun
如果比较entity bean和stateful session bean的状态图,就会发现stateful session bean没有pooled状态。为什么会这样?

先说一下我对stateful session bean的理解:当stateful session bean被passivate时,他的状态会被串行化到二级存储器中,而bean实例会从内存中被消除。当这个passivated bean需要被重新激活时,重新构造bean实例,然后反串行化bean的状态。不知道我的理解是否正确?

我的疑问是:为什么不将被passivate的stateful session bean实例(我这里说的只是bean实例,其状态仍然被串行化到二级存储器中)放到一个pool中,如entity bean一样,这用也可以用少数的bean实例服务于多个EJBObject.

希望能有高手解惑

多谢了

banq
2004-09-13 16:49
stateful session bean正如它的名字一样,是有状态,所谓有状态就是有数据,这些数据是某个客户端私有的,所以必须使用Cache支持。

我一直努力让初学者理解Cache和Pool的区别,一旦掌握,Session Bean等就容易理解,我的书籍《Java实用系统开发指南》中第5章,就是从Cache和Pool介绍EJB,而不是象其他书籍从RMI和Corba这样网络玄妙概念开始的。

jamesdusun
2004-09-15 18:16
多谢答复,

但我的问题好像并没有被解释,我还是不太明白,能再往深里解释一下么,谢谢了。

yanbuhan
2004-09-15 19:31
其实banq先生已经说的很清楚了。

Cache的为某一用户专用。

Pool的为所有用户共用。

有状态EJB,它与某一特定用户绑定,所以只能用Cache

而实体EJB呢,为所有用户共同使用,所以可以用Pool.

不知道说的对不对。

banq
2004-09-16 09:26
是的,无态Session Bean是Pool,有态Session Bean是Cache,而实体bean则是Pool + Cache。

Pool想像成一个容器、池,而Cache则是一个堆栈或列表。这设计EJB原理,具体解释起来会很长。但是理解这个对使用EJB很重要。

猜你喜欢
2Go 1 2 下一页