无状态会话ejb object的个人理解

04-09-27 wwlhp@jdon
每次访问都要创建一个新的ejb对象,不用了就把这个ejb对象删除。既然这个ejb对象没有任何用户会话相关的状态,容器为什么不去重用呢。

当然可以用home对象多建立一些ejb对象,在web层维护一个ejb对象的stub池。访问ejb时就从池中取出一个stub,调用业务方法,用完了就把这个stub返回池中。但不知道这样做值不值得,能提高多少性能。请高手们指点。

huzhigang
2004-09-28 08:36
容器对无状态回话bean是以实例池的形式来提供对多用户使用。并不会像你说的这样做。

任何一个SLSB一旦服务完一个客户,经常表现为完成一个SLSB方法后,该实例就可以立即来服务另一个客户。不会导致SLSB的删除。

SLSB的删除会发生在几种情况,比如:出现系统级的异常,容器发现实例池不必要的过大,等。

SportsBaby1980
2004-09-28 09:44
你讲的:

当然可以用home对象多建立一些ejb对象,在web层维护一个ejb对象的stub池。访问ejb时就从池中取出一个stub,调用业务方法,用完了就把这个stub返回池中。但不知道这样做值不值得,能提高多少性能。请高手们指点。

如果是你做的话,当然不值得,因为你使用的Application Server已经完成了。再做一次?

wwlhp@jdon
2004-09-28 10:45
>如果是你做的话,当然不值得,因为你使用的Application Server已经完成了。再做一次?

不明白,能说清楚点么?

SportsBaby1980
2004-09-28 14:50
不知道你了解

EJB的生命周期否?

StateLess SB

EJB是存在EJB POOL中(EJB pool在EJB container中)

SLSB:因为是无状态,所以,对于任何一个客户端来讲

都是一样的,也就是说,一个SLSB 在服务完一个客户端后,

再向其他客户端服务,是不会有任何影响,因为不存在状态的问题

这样的话,SLSB 在服务完后,可以继续对其他客户服务,

而不是销毁掉。

这同DataSource是类似的,

取一个Connection,使用完毕后,放到 Connection pool中,

并不关闭,如果再有要求,可继续使用。

最好找本书,仔细的研究一下。

再动手做。

猜你喜欢
2Go 1 2 下一页