什么是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
分享到:
相关推荐
里面包含本地接口的SessionBean和远程接口的SessionBean。
EJB3.0开发Session Bean.rar EJB3.0开发Session Bean.rar
学习使用JavaBean,sessionbean,以及学习EJB的编程
ejb实例包括session bean和实体bean
简要介绍JNDI,EJB及其开发应用技术,附有Session Bean的开发实例
Java SessionBean状态判断的例子,代码包中的两个实例,分别对无状态SessionBean和有状态SessionBean进行了演示,请注意,Home对象是EJB对象的制作生成库,该方法生成EJB对象,value参数用于计数器的初始化,在无状态...
EJB3图文教程之开发Session Bean
基于java的开发源码-EJB中有、无状态SessionBean的两个例子.zip 基于java的开发源码-EJB中有、无状态SessionBean的两个例子.zip 基于java的开发源码-EJB中有、无状态SessionBean的两个例子.zip 基于java的开发源码-...
有关SessionBean的学习笔记,这是个人的学习总结,希望对大家有用。
ejb sessionbean demoejb sessionbean demoejb sessionbean demoejb sessionbean demo
Java EJB中有、无状态SessionBean的两个例子,的无状态SessionBean可,会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等; 在有状态SessionBean中,用累加...
主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务
NULL 博文链接:https://bozhi521.iteye.com/blog/362744
Tomcat6远程调用GlassFish V2的session bean GlassFish V2 是一个比较完整的ejb3服务器,性能也有了很大的提高,因此最近试用了一下,并通过Tomcat进行了分布式调用。 Session Bean: ...
结合ORACLE数据库, 里面有很多例子, 很有帮助的。
ejb3实例(包括sessionbean和entitybean,sql),sqlserver数据库,配置好JNDI数据源后即可运行,值得关注。
实验一:使用Session Bean和JDBC技术完成登录和注册功能 实验二:使用Entity Bean替代JDBC完成登录和注册 实验三:在登录或注册成功之后,使用Message-Driven Bean对客户端发送消息 实验四:使用Servlet和JSP技术...
对EJB中session bean的见解,转载自其它技术网站
南京大学软件学院J2EE课件(SessionBean)
itfuture_sessionbean的第二部分