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

会话 Bean 用于管理实体 Bean 和其它会话 Bean 的交互、访问资源,它们通常代表客户机执行任务 。会话 Bean 对应于“模型-视图-控制器”体系结构中的控制器,因为它们都封装三层体系结构中的商业 逻辑。会话Bean也叫会话组件(session bean),又可分为无状态会话组件和有状态会话组件两类。

无状态 Bean 之所以称作无状态是因为它们是过渡的;他们不维护方法调用之间的商业状态。有状态 会话 Bean 封装商业逻辑和特定于某个客户机的状态。有状态 bean 之所以称作“有状态”是因为它们维 护方法调用之间的商业状态,状态保留在内存中,并不持久。

一、无状态(stateless)会话Bean

无状态(stateless)会话组件不保留客户程序调用的状态,这意味着客户程序对这类组件的两次方法 调用之间是没有关联的。由于无状态会话组件无须维持与客户程序的会话状态,针对这类组件采用的实例 池机制具有较高的性能与可伸缩性,非常适合以一定数量的实例支持大量并发客户程序的调用请求。(由 于不含任何客户程序可见的状态,无状态会话组件实例池中的每一实例均被认为是等同的。)

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

二、有状态(statlful)会话Bean

有状态会话组件比较特殊,因为这类组件必须维持与客户程序的会话状态,并且这些状态又不是持久 的,从而在有状态会话组件的实例池中不同的实例之间是有区别的。因而针对有状态会话组件使用的实例 池机制主要目标是实现缓存(caching),而不是像实体组件或无状态会话组件那样强调以少量实例为大 量的并发客户请求服务。

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

本文先介绍于此,下篇将结合示例来介绍有状态/无状态会话Bean的相关知识点.尽请关注!

时间: 2025-01-21 02:41:18

一步一步学EJB 3.0(三):悟透会话Bean(上)的相关文章

一步一步学EJB3.0(三):悟透会话Bean(下)

三.无状态会话Bean实例 在上一篇文章里,其实我们已经应用到了无状态会话Bean,那好,下面我们详细的来分析下上一篇文 章里给出的示例程序. 没有阅读过的朋友请点击这里阅读:<<一步一步学EJB 3.0(二):初探企业 EJB模块开发>> . 首先我们来看看接口的定义: 1 /** 2 * 远程接口 3 * @author Beniao 4 */ 5 @Remote 6 public interface HelloRemote { 7 void sayHello(String s

一步一步学EJB 3.0(二):初探企业EJB模块开发

上一篇文章里详细介绍了EJB 3.0的开发环境的搭建,本文以上文中所搭建好的开发环境,给大家简单的 介绍下在NetBeans下去开发企业EJB的流程,以一个简单的示例程序展开介绍. 一.建立EJB模块 这一步很简单,选择"文件"菜单里的"新建项目"选项,在项目类别里选择"企业",在右边项目 选项里选择"EJB模块",详细如下图示: 二.建立包和会话Bean类 在上面建立的EJB模块里新建立一个包,如:com.beniao.da

EJB 3.0开发指南之实体Bean

在EJB3.0中开发实体Bean非常简单,你可以象开发一般的java bean一样编程,只需做少量的注释.一个实体bean不需要实现Home接口或者Remote.Local接口. 实体Bean通过EntityManager产生.查找.和持久层结合.从持久层收回等操作. JBoss的EJB3.0架构在Hibernate之上. 注释: @Entity:如果你要建立一个实体Bean的类,你必须在类上加上这个注释,用来告诉容器这个类是实体Bean.这个Bean的主键由@Id指定. 这个注释的声明如下:

EJB 3.0开发指南之实体Bean的继承

在EJB3.0中,实体Bean可以实现继承关系. 比如有个Person的实体bean,它有姓名和性别两个属性. 上帝和女娲造人的时候,造出两种人:Man和Woman.Man和Woman都是实体Bean,而且他们都继承Person. 单一表策略就是副实体和子实体的数据都存放在一张表中,同时指定一列用来区别这些实体. 如: @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE, discriminatorType = Discrim

一步一步学EJB 3.0(一):开发环境搭建

一.开发环境选择 IDE:NetBeans IDE 6.0.1 SERVER:Sun Application Server(9.0) 二.安装NetBeans 我使用的是NetBeans IDE 6.0.1,大家可以从sum公司网站下载.安装过程很简单,只需要点"下一部 "就OK了,需要注意的就是在选择要安装的应用服务器的时候,选择GlassFish V2 URL,这是Sun公司在 NetBeans里集成的一个应用服务器,其实也就是:Sun Application Server. 安装

一步一步用JBuilder4开发EJB(转自china-pub)

一步一步用JBuilder4开发EJB 作者:廖家序 发布时间:2001/02/07 文章摘要: 本文提供一个步骤,通过简单的例子介绍怎样在JBuilder4的集成开发环境下开发EJB.这些步骤都很简单,对于了解EJB体系结构和一般的编程规则的人很容易理解.目的是为了能够让大家掌握在JBuilder4下开发分布式的多层应用系统的简单.快速的方法,达到举一反三的效果.          正文: 一步一步用JBuilder4开发EJB 一. 简介 Enterprise Java Beans(EJB)

一步一步学ROP之linux_x86篇

一步一步学ROP之linux_x86篇 作者:蒸米@阿里聚安全 一.序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等).虽然现在大家都在用64位的操作系统,但是想要扎实的学好ROP还是得从基础的x86系统开始,但看官请不要着急,在随后的教程中我们还会带来linux_x64以及android (arm)方面的ROP利用方法,欢迎大家继续学习. 小编备注:文中涉及代

一步一步学ROP之linux_x64篇

一步一步学ROP之linux_x64篇 一.序 **ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等).上次我们主要讨论了linux_x86的ROP攻击:<一步一步学ROP之linux_x86篇>,在这次的教程中我们会带来上一篇的补充以及linux_x64方面的ROP利用方法,欢迎大家继续学习. 另外文中涉及代码可在我的github下载:https://githu

一步一步学Silverlight :在Silverlight中如何用JavaScript调用.NET代码

概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON.Web Service.WCF以及Sockets的支持等一系列新的特性.<一步一步学Silverlight 2系列>文章将从Silverlight 2基础知识.数据与通信.自定义控件.动画.图形图像等几个方面带您快速进入Silverlight 2开发. Silv