background image

EJB 是 J2EE 平台的核心,也是 J2EE 得到业界广泛关注和支持的主要原因。众所周知

J2EE 的一个主要目的就是简化企业应用系统的开发,使程序员将主要精力放在商业逻辑的
开发上。

EJB 正是基于这种思想的服务器端技术,它本身也是一种规范,该规范定义了一个

可重用的组件框架来实现分布式的、面向对象的商业逻辑;其核心思想是将商业逻辑与底层
的系统逻辑分开,使开发者只需关心商业逻辑,而由

EJB 容器实现目录服务、事务处理、持

久性、安全性等底层系统逻辑。

一个可部署的

EJB 组件包含 3 个部分:Remote 接口、Home 接口和 Enterprise Beans 类。

(1)

Remote 接口  Remote 接口定义 EJB 组件中提供的可供用户调用的方法,也就是

通常所说的实现商业逻辑的函数或过程(如计算商品价格的函数),以供远程客户端调用。

EJB 组件部署到容器的时候,容器会自动生成 Remote 接口相应的实例,即 EJB 对象,

它负责代理用户的调用请求。

 

(2)

Home 接口  Home 接口定义了一组方法来创建新的 EJB 对象,查找、定位和清除

已有的

EJB 对象。在 EJB 组件部署时,容器也会自动生成相应的 Home 对象,该对象负责查

找和创建

EJB 对象,返回 EJB 对象的引用给客户;用户利用该引用调用 EJB 组件的方法,

得到结果;最后

Home 对象清除 EJB 对象。可以形象地称 Home 接口为 EJB 对象的工厂。 

(3)

Enterprise Beans 类  Enterprise Beans 类是商业逻辑的具体实现类。它可供用户调

用的方法在

Remote 接口中定义。根据功能不同,EJB 2.0 规范中定义了三种 Enterprise 

Beans: 会 话 Beans ( Session  Beans ) 、 实 体 Beans ( Entity  Beans ) 和 消 息 驱 动
Beans(Message-driven Beans)。

① 会话 Beans 分无状态和有状态两种。一般无状态的会话 Beans 模拟商业逻辑,比如计

算价格等。有状态的会话

Beans 通常模拟一个客户会话,它会临时保存客户信息,根据客户

要求调用其他

Beans 来存取数据。两种会话 Beans 都不保存状态信息或数据,当客户断开连

接或服务器关闭时,会话

Beans 也随之消失。一个会话 Beans 的典型例子是网站上的购物车

② 实体 Beans 模拟商业数据,并表示一个数据存储,可以是状态信息或数据库中的一

条记录。实体

Beans 在客户断开连接或服务器关闭后,仍有服务保证其数据得以保存。一个

实体

Beans 的典型例子就是客户账号信息。 

③ 消息驱动 Beans 在行为上很像会话 Beans。不同的是仅在需要向这些 Beans 发送消息

时才调用消息驱动

Beans,比如在需要的时候发送用户确认信息等。 

另外,在提交和部署

EJB 组件时,还需要两个文件:部署描述文件,容器根据该文件

来部署

Enterprise Beans,提供所要求的服务;EJB jar 文件,它是提交给 EJB 容器的一个部

署单元,容器(应用服务器)在部署时解开它,装入

Enterprise Beans。 

EJB 容器非常复杂,一般由专业的 J2EE 应用服务器开发商提供,比较流行的 EJB 容器

IBM 的 WebShpere、BEA 公司的 WebLogic Server、Sun 公司的 iPlant 等应用服务器提供

EJB 容器除了为 EJB 提供事务处理、目录服务、持久性管理和安全性服务外,还负责 EJB 的
部署、发布和生命周期管理。

 

3.平台标准服务 
服务是组件和容器之间,以及容器和

J2EE 服务器之间的接口,在实现层面上它就是一

系列

API 和协议。J2EE 平台定义了一组标准的服务,其中有些服务是由 J2SE 提供的,有些

则是

J2EE 对 Java 的扩展。 

(1) 目录服务 JNDI(Java Name and Directory)  API 为应用程序提供了一个统一的接口

来完成标准的目录操作,由于

JNDI 是独立于目录协议的,应用程序可以用它访问各种目录

服务,如

LDAP、NDS、DNS 等。 

(2) 数据访问 JDBC(Java Database Connectivity)  API 为访问不同类型的数据库提供了

统一的途径,屏蔽了不同数据库的细节,具有平台无关性。

J2EE 平台除了要求核心的 JDBC 

3