`
茶是树叶
  • 浏览: 57924 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Session Bean

阅读更多
什么是Session Bean?
Session Bean封装了业务逻辑的,能被本地客户端,远程客户端,以及web service客户端通过编程的方式调用。为了访问部署在服务器上的应用,客户端需要调用session bean的方法。Session Bean在服务器中为客户端执行运算,使客户端不必关注复杂的业务逻辑。
Session bean不是持久的。
Session Bean的类型:
有状态的(stateful),无状态的(stateless),单例的(singleton)

Stateful Session Beans

对象的状态是由它的实例化变量值组成的。在有状态的session bean中,特定的客户端与session bean的session是以实例化变量的方式呈现的。因为客户端与session bean是有交互动作的,所以状态通常被称作会话状态。
从其名字可以看出,session bean与交互的session非常类似。session bean不是共享的,它只对应一个客户端,同理交互的session只能对应一个用户。当客户端终止响应后,session bean也会随客户端的消亡而消亡。
会话的状态只存在于客户端与session bean的会话中。如果客户端断开与session bean的联系,那么session终止,同时会话的状态消失。这种状态的短暂性不是问题,因为当客户端与session bean会话终止,保存状态就没必要了。

Stateless Session Beans

无状态的session bean不保存与客户端的会话状态。客户端调用无状态bean的方法时,bean的实例变量可能会保留与客户端之间的状态,但仅限于在一次调用过程中。方法调用完成后,有关客户端的状态就丢失了。在无状态会话bean的池中,客户端可能会改变实例化变量的状态,此状态持续到下次调用过程中。除了方法调用过程,所有的无状态会话bean的实例都是平等的,EJB容器会指派实例给任意的客户端。也就是说,无状态会话bean的状态适用于所有用户。
因为要支持大量用户,无状态的会话bean能为需要大量客户端访问的应用提供更好的伸缩性。也就是说对于支持同样数量的客户端访问,无状态的会话bean要少于有状态的会话bean。

Singleton Session Beans

单例会话bean实例化一次,且存在于应用的整个生命周期。单例会话bean设计的应用环境是这样的,客户端可以共享的,并发的访问一个单例会话bean的实例。
单例会话bean在功能上与无状态会话bean类似,但是单例bean只有一个实例,而无状态bean是存在池中的,池中的任意一个bean可能会响应客户端请求。与无状态会话bean类似,单例会话bean可以实现web service终端。
在客户端调用时,单例bean持有会话状态,但是当服务器崩溃或关闭时状态是不保存的。
单例bean在应用启动的时候初始化,允许单例bean执行应用程序的初始化任务。当应用销毁时单例bean可能会执行些清理工作,因为单例bean存活在应用的整个生命周期。

When to use Session Beans

有状态的session bean 适用于以下情况:

当特定的客户单与bean交互时需要保存状态

客户端调用bean时,bean需要保存客户端的信息

客户端调用应用的其他组件时间接的调用了bean,bean需要呈现客户端简单的视图

幕后的bean管理的几个企业bean的工作流程

为了提高性能,如果符合以下几点特征,你最好选无状态的session bean:

对于特定的客户端bean的状态没有数据

在一个方法调用过程中,bean对所有的客户端提供通用的任务。例如,你应该用一个无状态的session bean 去发送一封确认在线用户的邮件

bean实现了web service

以下几种情况适用单例session bean:

状态需要保持在应用的整个生命周期

bean需要并发的访问

应用需要bean在应用启动及停止时执行任务

bean实现了web service
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics