急切请教 如何遍历所有 stateful bean 多谢

03-09-16 noxel
         

我在业务中有个需求,需要对所有在缓存中的用户遍历,根据他们不同的情况发出通知消息。

如果我采用stateful bean,我不知道怎样遍历这些bean,好像容器不提供这些标准方法,除非我hack jboss。

如果我采用stateless bean,我只能自己写一个cache,保存每个客户不同的状态。这个cache内部实现线程同步原语,但是这样会违背ejb的不能在容器内部实现同步原语的限制。

我该怎么办,谢谢各位大虾

         

无道
2003-09-16 13:22

并不是任何功能都适合在EJB容器内完成,在这种情况下,你完全可以使用servlet来达到目的。

banq
2003-09-16 13:31

stateful bean的引用不是保存在HttpSession中吗?遍历所有的HttpSession的sessionId,就可以得到当前所有的stateful bean ObjectRef了。

或者,直接遍历HttpSession的sessionId,然后调用一个EJB的MDB发送通知。

这个有点类似获得所有在线人员的实现机理。

noxel
2003-09-16 13:44

我的业务中没有web层,是client直接调用ejb,所以这个sessionid有点勉强

如果不用httpsession,而是自己定制一个adaptor是否可以满足呢,也就是说要做一个客户代理的adaptor,保存所有的stateful bean 引用,同时在bean中保存这个adaptor的回掉,如果bean钝化,可以通知adaptor去除这个引用。

这样是否可行,比之在stateless bean中保存一个全局cache,那种解决方案好

多谢!!!

anonymous
2003-09-16 21:12

写入数据库啊。

3Go 1 2 3 下一页