Session Beans

1. Session BeansEntity bean的关系:

Entity bean提供了一种对象模型,它可以有效的简化开发人员创建修改删除数据库数据所需的工作。Session bean则跨越多个业务概念对数据进行访问。Session bean包含业务逻辑而entity bean则模塑持久数据。

它们俩的关系就像是剧本和演员的关系。脱离剧本的演员是毫无意义的,他们也许可以表达什么,但却不能讲一个完整的故事;同样,如果没有实现彼此的交互,代表数据的entity bean也就没有意义了。

2. Session Beans的分类

Session Beans分为statelessstateful两种类型。

Stateless session bean是一组相关服务的集合。每个服务由一个方法表示。它不维护任何介于两次方法调用间的状态。当你调用它的某个方法时,它会执行该方法并返回结果,既不了解也不关心前后还有哪些请求应用。

Stateless session bean是轻量而快速的:由于它不保存任何会话状态,因此也就不需要钝化或激活,进一步较低了切换的开销。

对于任何一项可以在一次方法调用中完成的活动而言,高效的Stateless session bean都是不错的选择。

Stateless session bean的生命周期:

Does Not Exist

Method-Read Pool

 

@PreDesroy

Class.newInstance()

注入@PostConstruct

有两个状态:Does Not ExistMethod-Ready Pool

Does Not Exist:还未被实例化,即还没有存在于系统内存中;

Method-Ready Pool状态:当容器需要某个实例时,就进入了Method-Ready Pool状态;从Does Not ExistMethod-Ready Pool状态会执行三步:容器调用beanClass.newInstance()

方法构造实例;容器通过注解或XML部署描述文件;容器会产生一个post-construction事件。

Bean class可以将方法标注为@PostConstruct,为该事件注册一个回调方法,该方法会在bean实例化后被容器调用。

Method-Ready Pool是一个实例池,由未被使用的Stateless session bean对象组成。因为可能有像依赖注入这样开销很大的操作,所以当这些实例不被使用时,将其暂存起来以备后续使用,这样更有效率。


Stateful session bean是客户端应用程序在服务器端的延续。它代表客户端执行各项任务,并维护着与客户端的会话状态。

和其他类型的bean不同,Stateful session bean是不使用实例池的。它在整个生命周期中只服务于一个客户端,因此对实例进行交换或实例池化都是不可能的。

Stateful session bean的生命周期:

 

Does Not Exist

Method-Ready

 

@PreDesroy

Class.newInstance()

注入@PostConstruct

Passive

超时

实例抛出系统异常

@PrePassive()

 

@PostActivatet

超时

有三个状态:Does Not ExistMethod-Ready Passive

Does Not Exist:还未被实例化,即还没有存在于系统内存中;

Method-Ready状态:此状态下,可以自由接受来自客户端的调用请求;

Passive状态:当bean实例不为客户端提供服务时,可能会有一段时间处于不活跃状态。为节省服务器资源,容器可能会将bean实例钝化:将会话状态保存起来,并将bean从内存中移除。当bean实例被激活时,状态自动恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值