`

无状态会话Bean与有状态会话Bean的区别以及实例池

阅读更多
1、有状态会话Bean和无状态会话Bean的区别?
从编写方面来说:接口没有区别,Bean类使用StatelessStatefull
从客户端来说:没有任何区别。
从容器方面来说:对于无状态会话Bean来说,当有客户端发送请求的时候,不一定创建实例,所以多个客户端可能共享实例,实例的成员变量保存的信息不是专门为某个客户保存的,这些信息是所有客户端共享的,有点类似于Java的静态成员。客户端不能期望服务器端为你保存信息。处理过程需要的信息通过方法的参数传递。如果是有状态会话Bean,服务器会为每个客户端创建独立实例(要保存信息),每个客户端的信息由相应的实例来保存,客户端的多次方法调用(initializeaddbookremovebook)之间可以共享信息,每次方法调用只需要传递额外的信息。
 
2、实例池的应用
通过实例的共享,减少实例的创建和释放所花费的时间,从而提高性能,因为作为企业级一应用,创建和释放的次数会非常多。
服务器可以提前创建若干Bean的实例,当有客户端访问的时候,可以快速的为客户端分配一个实例,用完之后再放回。
对于无状态会话Bean来说,当请求发生的时候,可以从实例池中任意挑选一个实例。
对于有状态会话Bean来说:
如果是新的请求
    如果有空闲实例(没有与客户端关联),从实例池中挑选空闲实例;
    如果没有空闲实例,查找与客户端(假设为C2)关联了但是没有使用的实例,首先为C2保存状态信息(挂起C2或者钝化C2);
  如果没有空闲实例,也没有可以挂起的客户端,则等待.
如果不是新的请求(可以认为是第二次或者之后的方法调用)
    首先查找与它关联的实例是否存在,如果在,直接调用方法;
    如果关联的实例已经不可用,查找空闲实例使用,并且使用服务器为当前客户保存的信息来初始化这个实例(激活);
    如果没有空闲实例可用,先挂起另外一个客户,然后再激活当前客户。
  如果没有空闲实例,也没有可以挂起的客户端,则等待.
分享到:
评论

相关推荐

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

    有状态会话Bean保持了与客户端的会话状态,这意味着它可以记住客户端在一系列交互过程中的状态。每个客户端请求都会被映射到一个特定的SSB实例,允许bean在多个方法调用之间存储和管理数据。在EJB3中,实现SSB通常...

    实战EJB之三 开发会话Bean(有状态会话Bean).doc

    实战EJB之三开发会话Bean(有状态会话Bean) ...有状态会话Bean是EJB中的一个重要组件,可以在客户引用期间维护Bean中的所有实例数据的状态值,开发有状态会话Bean需要正确地理解其生命周期和开发过程。

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

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

    Bean开发实例之二有状态会话Bean开发实例

    ### Bean开发实例之二:有状态会话Bean开发实例 #### 概述 本文档将详细介绍如何使用Java Business Components (JBX) 和 WebLogic Server (WLS) 开发一个有状态会话Bean(Stateful Session Bean)的具体实例。在这...

    Eclipse+Jboss EJB技术 会话Bean

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

    ejb有状态bean和无状态bean

    有状态会话Bean与无状态Bean的主要区别在于它们能保留客户端会话状态。当客户端首次与有状态Bean交互时,服务器会为该客户端创建一个专用实例。这个实例会记住客户端的所有交互信息,直到客户端结束会话或Bean被...

    EJB3开发第一个无状态会话bean

    无状态会话 Bean 是 EJB 的一种类型,它为每个请求创建一个新的实例,不保留任何客户端的上下文信息。这使得它们非常适合执行计算密集型任务或事务操作,而不涉及持久化状态。 3. **EJB3 的简化** EJB3 相比于...

    实验6-无状态会话bean.pdf

    无状态会话Bean的主要特点是每次请求都会创建一个新的Bean实例,不保留任何来自先前请求的状态信息,因此它们非常适合用于执行独立、无状态的计算任务。 总结来说,本实验旨在帮助学习者深入理解Java EE中无状态...

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

    会话Bean可以是无状态的或有状态的,无状态会话Bean通常用于处理一次性请求,而有状态会话Bean则保存了与客户端交互的上下文信息。 1. **无状态会话Bean**: - 无状态会话Bean不维护与客户端的特定关系,每次调用...

    ejb3.0 第2,3讲-开发第一个无状态会话bean和客户端

    本教程将重点关注如何开发一个简单的无状态会话Bean以及对应的客户端。 **无状态会话Bean** 无状态会话Bean是EJB的一种类型,它不保存任何客户端特定的信息。这意味着每个客户端调用的实例都是独立的,不会在不同...

    Java EJB会话Bean.pdf

    EJB会话Bean分为无状态会话Bean和有状态会话Bean。无状态会话Bean通常用于处理不依赖于会话状态的业务逻辑,而有状态会话Bean则保留了客户端交互的上下文信息。在Java EE容器中,EJB会话Bean的生命周期由容器管理,...

    ejbt1.会话bean

    - **有状态会话Bean**:相反,有状态会话Bean保留了与特定客户端会话的上下文信息,因此每个实例服务于一个单独的客户端。这种类型的Bean适用于需要跟踪用户交互或状态的场景。 4. **testSessionBean** 这可能是...

    Java EJB中有、无状态SessionBean的两个例子.rar

    有状态SessionBean能够保持与特定客户端的会话状态。这意味着当一个客户端与SSB交互时,该Bean可以记住之前的状态信息。例如,如果一个购物车应用使用SSB,那么Bean可以跟踪用户的购物选择,直到用户完成购买。这种...

    ejb.zip_单身会话bean

    与无状态会话bean相反,SFSB能够维护与客户端交互的上下文信息,也就是说,它们可以记住客户端的状态。这使得SFSB非常适合那些需要跟踪用户会话或购物车等应用场景。然而,由于需要存储状态,SFSB可能消耗更多资源,...

    Java EJB中有、无状态SessionBean的两个例子

    Java EJB中有、无状态SessionBean的两个例子,的无状态SessionBean可,会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;  在有状态SessionBean中,用累加...

    基于Java的实例源码-EJB中有、无状态SessionBean的两个例子.zip

    与无状态SessionBean相反,有状态SessionBean能够保留与特定客户端交互的信息,存储了客户端的状态。这使得它更适合于需要跟踪用户购物车、游戏进度等场景。在压缩包中,你可能看到一个名为` StatefulExample `的类...

    ejb3 第6讲--开发具有本地接口的无状态bean

    EJB3提供了多种bean类型,包括无状态会话bean、有状态会话bean、消息驱动bean和实体bean。 2. **本地接口** 本地接口是bean暴露给客户端调用的一种方式,它不需要远程通信,因此比远程接口更高效。在EJB3中,我们...

    基于Java的实例开发源码-EJB中有、无状态SessionBean的两个例子.zip

    本实例可能包含一个或多个演示程序,通过对比有状态和无状态SessionBean的使用场景和实现方式,帮助初学者理解这两种Bean的区别和应用场景。通过深入学习这些示例,你将更好地掌握如何在实际项目中运用EJB技术,提升...

Global site tag (gtag.js) - Google Analytics