精通EJB学习笔记(会话bean的介绍)

  
会话( session bean 的介绍
会话 bean 能够完成客户所需要的业务操作。作为业务对象,会话 bean 能够实现业务逻辑,业务规则,算法,工作流等。比如会话 bean 能够完成查价,订单登记,食品压缩,银行事务,股票交易,数据库操作,复杂计算等。而且会话 bean 是可重用的组件,供操作业务流程中的逻辑使用。
会话 bean 的生命周期
会话 bean 不是持久化的,它仅仅是内存对象,会话 bean 不会保存到持久化存储源中,一旦其生存的周边环境遭到破坏,会话 bean 也将不复存在。通常客户会话的( Client Session )的持续其决定了使用的会话 bean 的存活期,如果客户超时 EJB 容器将销毁会话 bean 实例,会话 bean 实例是存活短暂的对象,并且会话 bean 实例不能够在多客户间共享。
会话 bean 的子类型
会话 bean 有两种子类型:有状态会话 bean 和无状态会话 bean (区别上一篇中将过了)
有状态会话 bean
实现实例池功能: EJB 容器为了限制内存中运行的有状态会话 bean 实例的数量, EJB 容器需要将有状态会话 bean 的会话状态保存到硬盘或者其它存储源中,该过程称之为挂起 (Passivation) 。在挂起有状态会话 bean 后,会话状态会被安全的保存下来,而且其释放的内存可以供其他应用(或 EJB 实例)使用。一旦被挂起的有状态会话 bean 实例的客户再次调用它,被挂起的会话状态将重新回到有状态的会话 bean 实例中,该过程称之为激活 Activation )。现在有状态会话 bean 实例恢复了同原先客户的会话。但是激活的有状态会话 bean 实例不一定是服务于原先客户的那个实例,但并不影响使用。
EJB 实例也具有有状态会话 bean 的实例池功能,在处理多个并发客户时,只需要在内存中存活若干个有状态会话 bean 实例。代价是挂起和激活过程将导致 I/O 性能瓶颈。维护无状态会话 bean 实例池是十分简单的,因为没有会话状态需要维护。无状态会话 bean 不存在挂起和激活操作, EJB 容器可以随心所欲的销毁它。
EJB 容器会挂起和激活哪个有状态会话 bean 实例 ? 这取决于 EJB 容器。
大部分容器使用最近最少使用( Least Recently Used LRU )策略,及简单的挂起最近没有使用到的有状态会话 bean 实例。如果有状态会话 bean 实例最近没有使用到,则 EJB 容器会挂起它,从而将会话状态保存到硬盘上。只要有状态会话 bean 实例没有参与到客户请求中,容器就能够随时挂起它。
为激活有状态会话 bean 实例,大部分 EJB 容器都会使用 just-in-time 算法,即只有在客户请求到来时,才会激活有状态会话 bean 实例。如果客户请求传到 EJB 容器中,而且容器已经挂起了该客户的会话状态,则容器马上激活它,从而将挂起状态信息写到内存中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值