J2EE组件企业Bean详解教程

上传人:飞*** 文档编号:47808262 上传时间:2018-07-05 格式:PDF 页数:19 大小:502.65KB
返回 下载 相关 举报
J2EE组件企业Bean详解教程_第1页
第1页 / 共19页
J2EE组件企业Bean详解教程_第2页
第2页 / 共19页
J2EE组件企业Bean详解教程_第3页
第3页 / 共19页
J2EE组件企业Bean详解教程_第4页
第4页 / 共19页
J2EE组件企业Bean详解教程_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《J2EE组件企业Bean详解教程》由会员分享,可在线阅读,更多相关《J2EE组件企业Bean详解教程(19页珍藏版)》请在金锄头文库上搜索。

1、J2EE组件企业 Bean详解教程企业 Bean 是实现 EJB技术的 J2EE 组件。企业Bean 在俄 EJB 容器中运行,运行时环境由服务器建立(图 1-5 ) 。虽然 EJB容器对开发这是透明的,但它为运行其中的企业Bean 提供项事务处理等的系统级服务。这些服务是你可以快速的建立和部署企业Bean,而这些企业Bean 正是构成和新业务处理的J2EE 应用。本文内容:1,企业 Bean概述企业 Bean的优点何时需要使用企业Bean 企业 Bean的分类2,会话 Bean 状态管理模式何时需要会话Bean 3,EntityBean EntityBean的构造和会话 Bean的不同之处容

2、器管理的持久性何时需要EntityBean 4,Message-Driven Bean Message-DrivenBean 的构造和会话 Bean、EntityBean的不同之处何时需要Message-DrivenBean 5,定义客户端访问接口远程访问本地访问本地接口和容器管理的关系选择接口类型访问的性能访问的参数6,企业 Bean 的内容7,企业 Bean 的命名约定8,企业 Bean 的生存周期有状态会话Bean 的生存周期无状态会话Bean 的生存周期EntityBean的生存周期Message-DrivenBean 的生存周期1,企业Bean概述用 Java 语言编写, 企业 Be

3、an就是一个应用中封装了商务逻辑的服务器端组件。这些商务逻辑是实现应用程序目标的代码。例如在一个存货控制的应用程序里,企业Bean也许在checkInventoryLevel和 orderProduct方法中实现了商务逻辑,通过调用这两个方法,远程客户端就可以访问应用程序提供的存货管理的服务。企业 Bean的优点由于以下的原因,企业Bean 大大简化了分布是应用的开发。首先EJB容器给企业Bean提供了系统级服务,使Bean 开发者可以专注于商务问题的解决。是EJB 容器而不是开发者负责项事务处理和安全授权等系统级服务的管理。其次因为企业Bean而不是客户端实现商务逻辑, 客户端开发者就可以致

4、力于客户端表述的开发,而不必为实现商务规则或者数据库访问的日常处理而编码了。结果使客户端“ 瘦” 了许多,很明显,这个有点对于在小设备上运行的客户端来说是很重要的。最后,因为企业Bean是可移植的,应用程序组装者可以用现有的企业Bean建立新的应用程序。这些应用程序可以在任何兼容的J2EE 服务器上运行。何时需要使用企业Bean 如果你的应用程序符合以下的任一条件,你就应该考虑使用企业Bean:你的应用程序需要不断的升级。为了适应不断增长的用户,你可能需要将你的应用程序组件分布在多台不同的机器上运行。虽然并不仅仅是企业Bean可以在不同的机器上运行,但企业Bean的运行位置对于客户端始终是透明

5、的。需要用事务机制来保证数据完整性。企业Bean 支持事务机制以提供对共享资源并发访问的管理。应用程序需要支持众多不同类型的客户端。只需要极少的几行代码,远程客户端就可以很容易的访问到企业Bean。这些客户都可以很“ 瘦” 并且在理论上可以是任意数量不同类型的客户端。企业 Bean的分类表 3-1 列出了三种不同类型的企业Bean。接下来的几节将详细介绍每一种企业Bean. 企业 Bean 类型作用会话 Bean 完成客户端请求的动作EntityBean 描述持久存储的商业实体对象MessageDrivenBean 作为 JMS(Java Message Service Java 消息服务 )

6、 API的监听者异步处理监听到的的消息2,会话Bean 会话 Bean表现连接到J2EE服务器的一个单独的客户端。客户端通过调用会话Bean的方法来访问部署在服务器上的应用程序。会话Bean完成客户端的请求,从而对客户端隐藏了服务器内复杂商务逻辑的执行过程。正如会话 Bean的名称所表示的,它代表一次会话。单独的会话Bean 对象是不可以共享的,它只能有一个客户端访问,同样一次会话也只能有一个用户。和一次会话一样,会话Bean 对象不是持久性对象。 (就是说它的数据并不保存到数据库。)当客户端结束运行,对应的会话Bean也跟着结束并断开与客户端的联系(不保留特定客户端的任何信息)。第四章将会介

7、绍会话Bean的编码实例。状态管理模式根据状态管理模式的不同会话Bean可以分为两类: 有状态 ( stateful)会话 Bean和无状态( stateless)会话 Bean。有状态会话 Bean 。一个对象的状态由它的成员变量(数据成员)的状态决定。有状态会话Bean 的成员变量描述一个唯一的客户端- 会话 Bean 的关联状态。因为客户端要与对应的会话Bean进行对话,所以这种状态通常被叫做会话状态。会话状态在整个会话期间被保留。如果客户端运行结束或者删除对应的会话Bean,这个会话就结束同时状态被清除。这种状态的短暂性并不是问题,相反,如果客户端和会话Bean的对话结束就不必要在保留

8、会话的状态了。无状态会话 Bean无状态会话 Bean并不为客户端保留会话状态。在客户端掉用无状态会话Bean的方法时,对应会话Bean的数据成员会描述这个调用状态,但仅仅只在该方法调用期间保持这个状态。当方法调用结束,状态就被清除。除了在方法调用期间,所有同一个无状态会话Bean实例是等价的,可以被容器分配给任一客户端。因为无状态会话Bean 可以同时支持多个客户端,所以能更好的支持应用程序的可数的大量客户端。很明显,对支持相同数量的客户端的应用程序,需要的无状态会话Bean会比有状态会话Bean 要少。有时, EJB 容器会在没有请求的时候把有状态会话Bean 保存在内存(二级存储器Sec

9、ond Storage )中。不管什么时候,没有请求时无状态会话Bean都不会被保存中。所以,无状态会话 Bean会比有状态会话Bean有更高的性能。何时需要会话Bean 通常,在出现以下几种情况时你需要用会话Bean: . 在任何给定时间,只有一个客户端访问这个Bean 的实例。. Bean 的状态并不需要持久保存,只在一个时间段(可能是几小时)内保持。在以下情况下,建议采用有状态会话Bean: . Bean 需要描述一个于特定客户端的会话状态. Bean 需要在客户端的多个方法调用之间保存调用信息. Bean 作为应用程序的其他组件和客户端的中介者,呈现一个简单化的视图给客户端. 在 调

10、用 接 口 里 , Bean 管 理 很 多 企 业Bean 的 工 作 流 ( 如18章 的AccountControllerEJB的会话 Bean例子) 。如果你的应用符合以下特性,为了得到更高的性能你应该选择无状态会话Bean: .Bean 的状态不包含客户端相关的数据. 在一个单一方法调用中,Bean 已经可以为客户端完成所需要的工作。例如你可以用无状态会话Bean发一封邮件确认网络订单。.Bean 需要从数据库获取一些客户端经常访问的只读数据。你可以用这样的Bean来访问数据表中代表这个月已经卖出的产品的行。3,EntityBean 一个 EntityBean描述一个持久存储备的商业

11、对象。商业对象的例子如:消费者,订单和产品等。在J2EE SDK 中持久存储设备是一个关系型数据库。最典型的情况是一个EntityBean又一个在地层数据库中有一个表相对应,而 EntityBean的每一个实例对应表中的一行数据。在第5 和第 6 章有示例代码。EntityBean和会话 Bean 的不同之处EntityBean和会话 Bean有很多不同之处。EntityBean是持久性的, 允许共享访问, 拥有主键并且会参与和其他EntityBean的关联。持久性因为 EntityBean的状态保存在存储设备中,所以它具有持久性。 持久性是指EntityBean的状态跨越应用程序和J2EE服

12、务器处理过程的生存期,就是说应用程序结束或者服务器终止 EntityBean的状态仍然保留。如果你是用数据库,你就是在使用持久性数据。数据库中的数据是持久性的, 应为就算你关闭数据库服务器或者相应的应用程序,他们仍然是存在的。EntityBean有两种持久性管理机制:BMP (bean-managed persistence Bean管理的持久性)和CMP (container-managed persistence 容器管理的持久性) 。对于BMP ,必须在EntityBean中手工编写访问数据库的代码。对于CMP ,容器会自动生成访问数据库的代码,为开发者节省了为数据库访问编码。详细信息在

13、下节容器管理的持久性中介绍。共享访问EntityBean可以被多客户端所共享。由于多个客户端可能同时去修改同一数据,所以在调用过程中事务机制非常重要。典型情况下EJB容器都支持事务机制。在这种情况下, 可以在 Bean的部署描述符中确定它的事务属性。开发者不必为事务界限编码容器会自动划分事务界限。14 章将详细描述Bean的事务机制。主键每一个 EntityBean实例都有一个唯一对象标识。例如一个特定的EntityBean实例可能用一个特定的数字来标识。这个唯一标识就是主键,可以让客户端找到对应的EntityBean实例。更多信息请查看主键和Bean管理的持久性一节。关系象关系数据库中的一个

14、表一样,EntityBean之间也会有关系。例如在一个学校登记系统中,表示学生的StudentEJB 和表示课程的CourseEJB 因为学生必须登记上课而产生关系。EntityBean关系的实现方法对于BMP和 CMP是不同的。 BMP需要编码来实现关系,而CMP 是由容器来处理关系的(开发者必须在部署描述符中定义关系)。因此, EntityBean的关系通常是指采用CMP 的关系。容器管理的持久性(CMP )容器管理的持久性(CMP )是指 EJB容器负责处理所有的数据库访问。EntityBean的代码不包含任何数据库访问语句(SQL ) 。所以 Bean 的代码不会受到低层存储机制(数据

15、库)的约束。 由于这样的灵活性,即使把 EntityBean部署到使用不同数据库的不同的服务器上,也不需要修改代码和重新编译。简而言之,CMP 大大提高了EntityBean的可移植性。为了可以自动生成数据库访问代码,容器需要知道EntityBean所代表数据的抽象规则。抽象数据模式(Abstract Schema )作为 EntityBean的部署描述符的一部分,抽象数据模式定义了EntityBean的持久性字段和关系。 抽象数据模式不同于底层数据库的物理表述。抽象是将它和底层的数据库物理模式区分开来(这里指的是把数据库的表和字段直接映射倒EntityBean) 。比如关系型数据库的物理规划

16、是指由表和列组成的结构。你需要在部署描述符中指定抽象数据模式的名称,这个名称会在用EJB QL(Enterptise JavaBean Query Language) 写查询的时候被引用。 对于 CMP , 你需要为除了findByPrimaryKey的所有查找方法定义一个对应的EJB QL查询。这个查询将在该查找方法被调用的时候有容器执行。第8 章将详细介绍EJB QL。在你想要编码之前了解一下抽象数据模式的梗概是很有帮助的。下图是一个描绘3 个EntityBean之间关系的简单规划。这些关系将在后续章节深入讨论。图 3-1 持久性字段( Persistent Fields)EntityBean 的持久性字段都存储在地层的数据存储设备中。它们共同组成了Entity Bean的状态。在运行时,EJB容器自动地在数据库和EntityBean 之间同步这些状态。在部署的时候,典型情况容器会把EntityBean 映射为数据库中的一张对应表而持久性字段映射为表的字段( column 列) 。例如:一个 EntityBean CustomerEJB可能有 firstName,lastNam

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号