EJB的分类及其各自的功能和应用

开发 后端
本文向您介绍EJB的分类,并通过分析电子购物环节的业务逻辑层的对象模型来说明各种EJB在业务逻辑层中的不同应用

在EJB2.0中对定义了三种不同类别的EJB分类:Session Bean(会话Bean)、Entity Bean(实体Bean)和Message-Driven Bean(消息驱动Bean)。

1 EJB分类之会话Bean

会话Bean是商务过程对象,执行商务逻辑、规则和工作流程。会话Bean之所以被称为会话Bean,是因为它代表的是一个动作、是一个过程,它的生存期就是调用它的客户端与它进行会话的过程。

会话Bean根据其是否保存客户的状态,又分为状态会话Bean和无状态会话Bean。状态会话Bean是一种保持会话状态的服务,每个实例都与特定的客户机相关联,在与客户机的方法调用之间维持对话状态。与之相反,无状态会话Bean不保存与特定客户的对话状态。因此状态会话Bean比无状态会话 Bean具有更多的功能,而无状态会话Bean实例可以通过 EJB容器自由地在客户机之间交换,从而少量的会话Bean就可以服务于大量的客户机。

2 EJB分类之实体Bean

实体Bean代表商务上的实体,比如商务数据,应该包含与数据相关的逻辑。实体Bean是对应到数据库中的一个视图,一个实体Bean实例和底层数据库完全是一回事。因此,一个简单的实体bean实例代表一个特殊的记录。更复杂的实体bean可以代表数据库表间关联视图。

实体Bean有两种操作类型:BMP(Bean管理持久性)和CMP(容器管理持久性)。BMP是指由Bean自己来实现实体Bean的持久性,即在 Bean中实现数据库操作。而CMP则是由容器实现Bean的持久性,使我们不需要在Bean内再编写数据库操作的代码。

3 EJB分类之消息驱动Bean

消息驱动Bean是EJB2.0新引入的一种Bean类型。它的主要目的是,通过允许容器去聚合并且管理消息驱动Bean实例,以此来提供传入JMS消息的并发处理。

4 会话Bean与实体Bean的区别和联系

会话Bean执行应用逻辑,它们隐含地使用实体Bean作为它们操作的数据。在EJB分布式对象体系结构中,会话Bean被用做代表实际商务过程的高层接口来屏蔽底层实体Bean子系统。实体Bean是实际恒定商务实体的模型,因此它通常比会话Bean具有更高层次的重复使用。

5 EJB的应用

接下来,通过分析电子购物环节的业务逻辑层的对象模型来说明各种EJB在业务逻辑层中的不同应用。

业务逻辑层包含了一系列EJB组件。首先我们将其抽象成若干个对象模型,如图所示:

              
                                                                 图:对象模型图

本图首先反映了电子商务中各EJB组件之间的静态关系。

由多个购物篮条目(Cart Line Item)组成的一个购物篮(Cart)为一个顾客 (Customer)存储产品的临时选择;由多个订单条目(Order line Item)组成的一个订单(Order)为一个顾客存储产品的永久选择。购物篮能将自身转换为订单。

一个购物篮条目代表一个产品(Product)的临时选择,一个订单条目代表一个产品的永久选择。

估价器(Pricer)在顾客查看购物篮时计算购物篮的价格,并且在顾客最终生成订单时计算订单的价格。

订单处理器(Order Processor)为订单验证信用卡,发送E-mail确认,并标识为永久。

同时从本图中也可以了解一个电子购物的过程:首先,在购物时顾客把自己感兴趣的产品放入购物篮中,同时由估价器对购物篮进行及时估价。然后,顾客在确认购买后,购物篮能自动生成订单。再由估价器计算出订单的价格。接着,由订单处理器验证顾客信用卡的合法性,在交易完成后为顾客发送E-mail确认交易成功,并将本交易标识为永久。

顾客、订单、产品、订单条目这几个对象是永久性、持续性对象,例如,顾客信息、产品信息都需要存入数据库,并且在适当的时候从数据库中读取。所以,这几项都需要用实体Bean来实现。

购物篮和购物篮条目只在顾客购物的过程中起作用,所以不是永久性的,而且每一个购物篮都对应于一个特定的顾客,对应于若干条特定的购物车条目,因此购物篮和购物篮条目用状态会话Bean来充当最合适不过。

估价器的作用是计算出购物篮和订单的价格,它并没有和特定的顾客绑定,可以作用于任意的购物篮,而且也不是永久对象,因此估价器可以用一个无状态会话Bean来充当。

订单处理器是一个特殊的对象,它通过顾客所要求的不同的付款方式产生不同的订单,也就是说,它是由不同的付款方式来驱动的。所以在这里用消息驱动Bean是最恰当的。

【编辑推荐】

  1. 使用Eclipse+JBoss+EJB3编写有状态的SessionBean
  2. EJB3.1新特性一览 Time服务更强大
  3. 关于EJB的一些常见问题
  4. EJB3.1新特性详解 更强大的Time服务
  5. 精通EJB组件和EJB容器
责任编辑:佚名 来源: 好喜爱学习网
相关推荐

2009-04-02 13:45:36

网关网络

2011-07-22 12:22:49

室内光缆

2009-05-07 14:05:02

MySQL索引分类管理

2009-06-26 14:29:03

2009-06-12 12:46:59

EJB3.0

2009-06-26 16:01:39

EJB组织开发EJB容器EJB

2009-06-25 15:54:18

设计模式EJB

2009-02-16 09:25:43

EJBJavaBeanWebSphere

2011-03-04 10:03:45

EJB数据库应用

2009-06-11 16:01:17

EJB容器

2009-06-11 15:26:05

EJB组件EJB容器

2009-06-12 09:41:07

EJB3.0Spring

2009-06-25 17:08:14

2009-12-15 11:05:05

2021-11-07 15:04:39

机器学习人工智能数据

2017-01-17 09:38:52

ZooKeeperHadoopHBase

2009-06-22 16:59:33

POJOSpringEJB 3.0

2009-06-22 11:50:00

J2EE Web应用快速开发

2009-04-14 09:53:00

交换机分类

2009-06-25 16:35:12

EJB技术
点赞
收藏

51CTO技术栈公众号