`
lonvea
  • 浏览: 76022 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

EJB 中stateless、stateful 会话bean的区别

 
阅读更多

对于很多EJB的初学者,很多时候对有状态、无状态会话bean有一些误解。我给大家简单的介绍一下



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

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

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

1)有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。生命周期我们可以用web中context去简单认识,比如session、request等。在这个生命周期内,用户只会得到一个特定的stateful会话bean。

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

 

 

这两种bean的使用场合简析:

1)有状态会话bean:用于跟踪用户数据,它可以在分布式中被缓存和传递,只要生命周期未被销毁(如session会话,前提是此会话bean被session会话管理),那么此bean可以在应用中随时获取,且数据时被同步更新的。。它就像你的“妻子”,你要你还“爱她”,她会随你“一生”

     场合:用户登录权限切片控制,购物车等

 

2)无状态会话bean:这里你需要用servlet的思想去认识它,它就想servlet一样,为上层调用提供服务,并且是线程池的形式存在。当服务调用结束(如:获取web 服务,查询站点数据统计),无状态会话bean可能被销毁但也能继续存在,取决于线程池饱和度,但它不会为你保存任何和你的调用有“个人私情”的数据。你就认为他是一个servlet,它是提供共享服务的,它不是“老婆”,更像给你送邮件的“邮递员”,你们直接的交易,只是在你需要的时候,并以及结束。

 

 

 

 

现在你明白了吗??别搞混了额,别把“邮递员”当“老婆”,但更不希望你把“老婆”当“邮递员”。。。。

1
0
分享到:
评论

相关推荐

    Jboss下开发ejb应用之一会话bean的应用

    本文将围绕“Jboss下开发ejb应用之一会话bean的应用”这一主题,深入探讨如何在Jboss应用服务器上开发和部署会话Bean,以及涉及到的相关工具和源码。 会话Bean是EJB的一种类型,它代表了业务逻辑组件,为客户端提供...

    Eclipse+Jboss EJB技术 会话Bean

    在EJB中,会话Bean分为两种类型:无状态会话Bean(Stateless Session Bean)和有状态会话Bean(Stateful Session Bean)。无状态会话Bean不保留任何客户端特定的信息,每次调用都是独立的。而有状态会话Bean则可以...

    EJB3 示例有状态和无状态会话bean

    在EJB3中,我们通过在接口上添加`@Stateless`注解来定义一个无状态会话Bean。 ### 4. 测试EJB3会话Bean 在给定的描述中提到的`Test.jsp`是一个用于测试远程无状态会话bean的页面。这个页面通常会被包含在Web应用...

    JavaEE5学习笔记05-EJB之会话Bean总结

    ### JavaEE5学习笔记05-EJB之会话Bean总结 #### EJB(Enterprise JavaBeans)简介 EJB(Enterprise JavaBeans)是Java EE平台的一部分,用于开发和部署可重用的服务组件。EJB规范定义了如何编写、部署以及管理企业...

    EJB 会话BEAN PPT

    会话Bean是EJB中处理客户端交互的组件,根据其状态,会话Bean分为有状态会话Bean(Stateful Session Beans)和无状态会话Bean(Stateless Session Beans)。 1. **无状态会话Bean**:无状态会话Bean不会持久保存...

    ejb.zip_单身会话bean

    在这个ejb.zip_单身会话bean的压缩包中,我们很可能会找到关于这些特定类型的EJB实例代码。 首先,我们要理解“有状态会话bean”(Stateful Session Bean,SFSB)。与无状态会话bean相反,SFSB能够维护与客户端交互...

    EJB3.0源代码,包含会话Bean,实体Bean,还有消息Bean

    - **有状态会话Bean (Stateful Session Beans)**: 能够保持与特定客户端会话的状态,通常用于管理购物车或游戏状态等场景。 2. **实体Bean (Entity Beans)** - **容器管理的持久性 (Container-Managed ...

    关于有状态和无状态会话bean的解释

    本篇文章将深入探讨有状态(Stateful)和无状态(Stateless)会话Bean的区别,以及如何在实际应用中选择合适的类型。 首先,我们要理解会话Bean的基本概念。会话Bean是一种服务器端对象,它作为客户端应用程序与...

    PAS(Primeton Application Server)企业版EJB开发案例分析:有状态/无状态会话Bean与CMP/BMP实体Bean

    主要包括有状态会话Bean (Stateful Session Bean) 和无状态会话Bean (Stateless Session Bean),以及容器管理持久化实体Bean (CMP Entity Bean) 和Bean管理持久化实体Bean (BMP Entity Bean) 的开发过程。...

    Stateful--sessionbean.zip_sessionBean_stateful

    有状态会话Bean(Stateful Session Bean,SFSB)与无状态会话Bean(Stateless Session Bean, SLSB)的主要区别在于它们如何维护与客户端之间的交互状态。SLSB不存储任何关于客户端的信息,每次方法调用都是独立的,...

    ejbt1.会话bean

    开发EJB3会话Bean时,开发者通常会在Bean类上使用`@Stateless`或`@Stateful`注解来指定其类型。此外,还可以使用`@Remote`或`@Local`注解定义Bean的接口,供客户端调用。对于业务方法,可以通过`@...

    ejb有状态bean和无状态bean

    EJB主要分为三种类型:无状态会话Bean(Stateless Session Beans)、有状态会话Bean(Stateful Session Beans)以及实体Bean(Entity Beans)。本篇将深入探讨有状态Bean和无状态Bean的概念、区别以及它们的应用场景...

    EJB详解 sessionbean entitybean MDB

    它可以是无状态的(Stateless Session Bean),为每个请求创建新的实例,或者有状态的(Stateful Session Bean),维护与特定客户端会话的状态。 - **Entity Bean**:用于表示数据库中的持久化对象,实现业务实体的...

    EJB容器对bean的管理

    对于有状态session bean(Stateful session bean),由于需要维护会话状态,EJB容器采用了激活和钝化技术来节省资源。钝化是指在内存资源紧张时,将stateful session bean的状态序列化并存储到持久化存储中,同时从...

    自己编写的EJB源代码

    会话bean分为无状态会话bean(Stateless Session Bean)和有状态会话bean(Stateful Session Bean)。无状态bean不保存客户端间的状态,而有状态bean则能记住客户端的上下文信息。 "ManagerEJB"可能是这个EJB组件的...

    ejb实例包括session bean和实体bean

    1. **Stateful Session Bean**:状态ful会话Bean保留了与特定客户端会话相关联的状态信息。这意味着它能够跟踪客户端的状态,例如购物车中的商品,从而提供个性化的服务。 2. **Stateless Session Bean**:无状态...

    java EJB3实现三种Bean设计文档.doc

    本文档主要介绍了在Java EJB3环境中,如何实现三种不同类型的Bean:实体Bean(Entity Bean)、会话Bean(Session Bean)和消息驱动Bean(Message-Driven Bean)。 1. 开发环境: - **MyEclipse 7.0**:这是一个...

    EJB3.0开发Session Bean.rar

    EJB 3.0引入了多种注解,如`@Stateless`, `@Stateful`, `@Singleton`, `@LocalBean`, `@Remote`等,使得开发者可以通过在类和方法上添加注解来声明Bean的行为和接口。 **5. 依赖注入** 依赖注入允许Bean自动获取所...

    EJB教程.doc Enterprise Java Bean

    - **无状态会话Bean**(Stateless Session Bean): 不保留任何会话状态。 - **有状态会话Bean**(Stateful Session Bean): 保留会话状态。 - **实体Bean**(Entity Bean): 存储和检索持久化数据。 - **消息驱动Bean**...

Global site tag (gtag.js) - Google Analytics