有状态和无状态会话bean的区别

现实中,很多朋友对两种session bean存在误解,认为有状态是实例一直存在,保存每次调用后的状态,并对下一次调用起作用,而认为无状态是每次调用实例化一次,不保留用户信息。仔细分析并用实践检验后,你会发现,事实恰好相反:

有状态和无状态会话bean的本质区别是它们的生命期。

首先解释一个下面要用到的概念--用户:session bean 的用户实际上就是直接调用ejb的类的实例,甚至是这个实例的某个方法。同一个类的不同实例对于session bean 来说是不同的用户。

有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。

无状态会话bean :bean一旦实例化就被加进会话池中,各个用户都可以共用。即使用户已经消亡,bean 的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态bean。但无状态会话bean 并非没有状态,如果它有自己的属性(变量),那么这些变量就会受到所有调用它的用户的影响,这是在实际应用中必须注意的。

时间: 2024-08-29 16:06:58

有状态和无状态会话bean的区别的相关文章

当有状态会话Bean遇到JMS

问题描述 相信大家对EJB规范中的几种Bean一定听说过,包括:statelesssessionBean:在实现的时打上@Stateless即可,无状态会话Bean的生命周期非常简单的.它仅有两个状态:不存在和Method-Ready池.Method-Ready池是不在使用状态的无状态会话bean对象的实例池.Becauseofalltheinjectionandsuchthatcanhappen,这对于保存不在使用的无状态Bean实例是很有效的.这也是无状态会话Bean和有状态会话Bean的重

HTTP协议是无状态协议,怎么理解

HTTP协议是无状态协议,怎么理解?   Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息.  自己的理解,在asp.net里:每次提交服务器的页面没有任何关系,每次记录在页面的信息下次提交是记不住的,(除了应用本身可能已经存储在全局对象中的所有信息外)在.net里实际就是ViewState,ViewState是asp.net中保存页面信息的基本单位,应用时就是保存在控

一步一步学EJB 3.0(三):悟透会话Bean(上)

会话 Bean 用于管理实体 Bean 和其它会话 Bean 的交互.访问资源,它们通常代表客户机执行任务 .会话 Bean 对应于"模型-视图-控制器"体系结构中的控制器,因为它们都封装三层体系结构中的商业 逻辑.会话Bean也叫会话组件(session bean),又可分为无状态会话组件和有状态会话组件两类. 无状态 Bean 之所以称作无状态是因为它们是过渡的:他们不维护方法调用之间的商业状态.有状态 会话 Bean 封装商业逻辑和特定于某个客户机的状态.有状态 bean 之所以

EJB之无状态会话Bean简单应用-学习与实践

客户通过由EJB容器提供的远程和本地接口进行通信 • 访问控制表是用于保证安全其授权能访问特定功能的用户组或个人表. • 持久性是指对象状态永久地存储在数据存储器中,诸如数据库. • 企业 beans的类型: –实体 (Entity) beans 实体beans支持多个会话和多个客户,可分为: Bean - 管理Bean持久性 Container- 管理容器的持久性 –会话 ( Session) beans 会话beans 执行业务任务时没有存储机制,可分为: 有状态会话(Stateful se

JBoss下的EJB3开发无状态会话Bean

1.开发一个具有Remote和Local接口的EJB3 Stateless SessionBean.如有那里写的不好请大家多多指教.################################ 好了先介绍一下明星演员们:###############################Remote接口:RemoteHelloWorld.javaLocal接口:LocalHelloWorld.javaSessionBean:HelloWorldBean.javaJNDI配置:jndi.proper

EJB 3.0开发指南之无状态会话Bean

在所有的EJB3.0规范中定义的EJB,都不必实现Home接口. 一个会话Bean必须有一个业务接口,这个接口由会话Bean来实现,或者也可以由会话Bean来产生.这样,你可以只写一个文件,就可以生成业务逻辑实现类.远程接口.本地接口等. - @Remote @Local @Stateless public class CounterBean { -- } 在目前jboss的实现中,必须要有一个独立的业务接口. 这个接口不必实现EJBObject或者EJBLocalObject. 一个无状态会话

Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)

本文为原创,如需转载,请注明作者和出处,谢谢!     在本文主要介绍如何来开发一个Stateless Session Bean,并在未安装WebLogic10的机器上访问Session Bean.开发EJB3 Stateless Session Bean要比开发EJB2 Stateless Session Bean容易得多,只需要几个注释就可以搞定.读者可按如下的步骤来开发和调用EJB3 Stateless Session Bean: 第1步:编写远程接口     每一个Session Bea

EJB 3.0开发指南之有状态会话Bean

和无状态会话Bean一样,一个有状态会话Bean必须有一个业务接口,这个接口由会话Bean来实现,或者也可以由会话Bean来产生.这样,你可以只写一个文件,就可以生成业务逻辑实现类.远程接口.本地接口等. 在目前jboss的实现中,必须要有一个独立的业务接口. 这个接口不必实现EJBObject或者EJBLocalObject. 一个有状态会话Bean 必须使用Statelfull注释,以表明它是一个有状态的会话Bean.EJB容器将根据这个注释来判定它的类型.或者实现javax.ejb.Ses

J2EE探险者: 用于无状态网络的J2EE技术

在最近几年里,Java 行业的发展呈指数级增长.作为一名企业应用程序开发人员.架构设计师或者技术经理,您可以从许多供应商.最佳实践.规范和组件类型中为您的 Java 技术实现进行选择.J2EE 探险者系列的目的是帮助您从这些选择中找到一条途径,对于任何一种给定的情形,协助您挑选合适的技术. 在本文,也就是第 1 部分中,我们将探讨无状态 J2EE 组件,并评估出最合适的组件来用于您的企业体系结构.说到无状态.请求处理组件,可供选择的 J2EE 技术主要有两种:servlet 或 Enterpri