EJB(企业级JavaBean)之Session Bean

EJB是企业级JavaBean,是一种分布式的具体实现。EJB的企业Bean分为三种,分别是Session Bean(会话Bean)、其中有分为Stateless Session Bean(无状态会话Bean)、Statefule Session Bean(有状态会话Bean);Message Driven Bean(消息驱动Bean)、Persistence(持久化)的Entity Bean(实体Bean)。这篇主要讲解Session
Bean

1、Session Bean

会话Bean的作用:进行业务逻辑操作。比如注册用户、订单登记、数据库操作等等。

Session

从客户端获得EJB对象到客户端生命周期结束或者释放EJB对象为止称为一次会话。

会话和对象是一对一对应关系,一次会话对应一个实例化出来的对象;两次会话就对应两个对象。

对象状态

对象的状态是由其实例变量(即成员变量)的值组成

实例变量:与实例相关的变量,不同的实例,其变量值不同。一般是非静态变量

类变量:与类相关的变量,同一类中,其变量值全是相同的。一般是静态变量

有状态的Session Bean和无状态的Session Bean区别就在与多次会话过程中(请求/方法调用),实例变量的值能否被保存

1.1、Stateful Session Bean

有状态的会话Bean,即EJB能够在同一客户端在多次请求(方法调用)之间保持装状态信息

面对的是有状态的EJB就相当于每次调用这个对象的时候服务器新创建了一个对象给本次请求使用

根据不同的会话,服务器端会分配不同的session,那么如何在服务器端区分不同会话的session呢?通过jsessionid这个值来区分

1.2、Stateless Bean

面对的是有状态的EJB就相当于每次调用这个对象的时候服务器给我的是同一个对象。

它是以单例的形式管理的, 所以不能够区分不同的客户端

并非说EJB不能存在状态,二是EJB容器不会对EJB状态做保存。因为EJB容器不会对Srateless Session Bean的状态进行管理,所以它的性能要比Srateful Session Bean好

2、示例代码

Class stateTest{

Private int value=0;

Public void changeValue(int value){

System.out.print(value);

System.out.print(this.value);

This.value=value;

}

}

分别将stateTest设置为有状态和无状态

客户端调用

stateTest test1 = new stateTest();

test1.changeValue(1);

test1.changeValue(2);

stateTest test2 = new stateTest();

test2.changeValue(1);

test2.changeValue(2);

执行结果

无状态

1 0 2 1   1 1 2 2

有状态

1 0 2 1   1 0 2 1

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-15 05:24:59

EJB(企业级JavaBean)之Session Bean的相关文章

Java深度历险(二) EJB Session Bean有状态和无状态的区别与联系

刚开始对两种sessionbean存在误解,认为有状态是实例一直存在,保存每次调用后的状态,并对下一次调用起作用,而认为无状态是每次调用实例化一次,不保留用户信息.仔细分析并用实践检验后,会发现,事实恰好相反:有状态和无状态会话bean的本质区别是它们的生命期. 首先解释一个下面要用到的概念--用户:sessionbean 的用户实际上就是直接调用ejb的类的实例,甚至是这个实例的某个方法.同一个类的不同实例对于session bean来说是不同的用户. 实例解析 有状态的StatefulEjb

【进阶EJB】深入探讨三种Bean(一)——Session Bean

接着,我们继续EJB的学习.经过前两篇博客的介绍,我想大家已经对EJB有了一个初步的认识.但是大家想过没有,我们为什么要用EJB呢? why EJB? 其中一个很重要的原因就是分布式!所谓分布式,就是分布式对象之间相互协作,完成特定的业务功能.通俗一点来说,就是我们不是把事情交给一个人去做,而是把事情划分一下,交给多个人去处理,最后把多个人处理的结果综合在一起得到最终的结果.与此同时,分布式对象之间能够实现分布透明性,亦或是位置透明性,即在客户端代码中无需指定分布式对象的位置:而且分布式对象之间

JavaEE(16) - Web层和EJB的整合(Session Bean)

1. 轻量级JavaEE应用与经典JavaEE应用架构的联系 2. DAO组件与EAO组件的区别与联系 3. 业务组件与EAO组件的关系 4. 通过依赖注入访问无状态Session Bean 5. 通过EJB引用访问有状态Session Bean 6. 在工具类中访问Session Bean

不吐不快之EJB中有无状态的Session Bean比较

通过上一篇<不吐不快之EJB演练--开篇概述>的介绍,我们已经知道EJB中的Session Bean 又分为有状态和无状态两种类型,那它们之间又有什么区别和联系呢?接下来我们将使用一个简单示例进行演示说明. 示例 1.编写有状态Session Bean接口 /** * 有状态Session Bean接口 * @author Forrest * */ @Remote public interface StatefulEjb { /** * 进行内部计算的方法接口 * @param index *

EJB3.0中的session bean以及MDB解析

大型业务系统面临的主要问题就是高并发性和事务访问,客户端的数量与服务器端的分布式对象数量存在一定程度的正比关系,客户端数量越多,服务器端分布式对象也就越多,如何解决这种高并发的问题也就成了企业级架构首先要解决的问题.EJB作为一种服务器端分布式组件,为我们提供了应对策略. EJB提供了两种管理大量分布式对象的策略:实例池化和激活.下面分别对EJB组件模型中的三种模型进行一些分析. 第一种:无状态的会话Bean(Stateless session bean) Stateless session b

EJB与JavaBean区别

EJB不是一般的JavaBean,EJB是企业级JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean,书写EJB是需要遵循一定的规范的,具体规范你可以参考相关的资料.另外,要运行EJB,你需要相应的EJB容器,比如Weblogic,Jboss等,而JavaBean不需要,只需要安装Tomcat就可以了 1.EJB用于服务端应用开发, 而JavaBeans用于客户端应用开发.也可以使用JavaBeans进行服务端应用开发,但JavaBeans模型没有提供服务框架,当应用需

维护用户状态——Spring中session bean的使用

我们都知道,在web开发中一旦用户登陆系统,那么在他注销登陆之前,系统需要维护用户的状态,这样他才能看到自己的内容(比如个人主页.消息等). 那么如何维护用户的状态呢?在Spring中提供了一种bean的作用域机制,可以帮助我们轻松地管理用户状态. 这里用到的主要是session bean,从名字上就能看出来,它的作用域是和session绑定的,也就是说,每一个session会对应一个session bean,session bean之间互不影响. 比如我们这里想要维护的用户状态包括:用户名和工

使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(四)

MyEclipse限时秒杀!活动火热开启中>> [MyEclipse最新版下载] 四.运行XDoclet代码生成 通常每次更改XDoclet EJB配置.应用程序服务器设置或修改任何EJB bean实现类的XDoclet注释后,都应执行XDoclet. 现在是在firstejb项目上执行XDoclet并测试新的XDoclet设置的好机会,因为Trader EJB尚未使用新的XDoclet注释业务方法进行扩展. 1. 右键单击firstejb,然后选择MyEclipse>Run XDocl

使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(三)

MyEclipse限时秒杀!活动火热开启中>> [MyEclipse最新版下载] 三.配置XDoclet支持的项目 默认情况下,MyEclipse EJB项目未配置使用XDoclet功能.本节主要为大家介绍使用XDoclet支持,并执行XDoclet代码生成来启用和配置firstejb EJB项目的步骤,以便获取Trader EJB的依赖源代码和部署组件. 首先将Standard EJB XDoclet配置添加到firstejb项目.本节的最终目标是生成XDoclet配置,用于创建MyEcli