Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1854348
  • 博文数量: 237
  • 博客积分: 9995
  • 博客等级: 中将
  • 技术积分: 2890
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-30 10:33
文章分类

全部博文(237)

文章存档

2011年(1)

2007年(59)

2006年(177)

我的朋友

分类: Java

2006-10-08 21:48:23

EJB概述

1.什么是 EJB?

一个技术规范:EJB 从技术上而言不是一种"产品"EJB 是一种标准描述了构建应用组件要解决的:

 

可扩展 (Scalable)

分布式 (Distributed)

事务处理 (Transactional)

数据存储 (Persistent)

安全性 (Secure)

 

2.Sun 对 EJB 的期望

 

    提供一个标准的分布的、基于 OO 的组件架构屏蔽复杂的系统级功能需求Write once, run anywhere与非 Java 应用之间的互操作能力兼容 CORBA 标准

 

3.为什么选择 EJB?

 

       EJB 服务器完成"繁杂"的工作:应用开发人员关注于业务逻辑的实现,而不是底层的实现机制(类似于 4GL 语言设计的目标)

 

支持事务处理

 

多个业务操作同时成功,或全部失败可以通过在代码外的描述来定义事务处理级别。

 

可扩展性

 

EJB 可以根据您应用的增长而扩展EJB 服务器往往还提供了负载均衡和安全性:由 EJB 服务器提供资源的访问权限控制。

 

4.EJB 架构

 

为了满足架构的目标,规范中描述了

 

服务器 (Server)

容器 (Container)

(Class) 和实例 (Instance)

Home Remote 接口

客户端 (Client)

 

5. 简化的编程模型

 

       关注于业务逻辑实现:EJB 负责生命周期 (lifecycle), 数据存储 (persistence), 事务处理语义 (transactional semantic), 安全(security), ... 通用的编程模型:各种服务的高层 APIJava 是其编程语言。

 

6.EJB 特点

 

由一个 EJB 容器在运行时创建和管理 EJB,在部署 EJB 时定制其运行方式,由 EJB 容器和服务器来协调客户端的访问,可以部署到任何兼容的 EJB 容器中。客户端对 EJB 的视图是由 Bean 开发人员决定的

 

7.EJB 服务器

 

       管理 EJB 容器 (它管理 Bean);提供对操作系统服务的存取;提供 Java 相关的服务,尤其是通过 JNDI 访问命名空间;基于 OTS 的事务处理服务

 

8.EJB 容器

 

       管理 Bean 生命周期:将 EJB 服务器提供的服务传递给 Bean,生成代码来实现对 Bean 的存取访问。强制事务处理的限制;创建、初始化和回收 Bean;管理持久数据的存储;对客户端而言 EJB 容器是透明的。

 

9.在一个 EJB 服务器中的容器

 

目前容器通常是由 EJB 服务器本身提供的,在 EJB 1.0 1.1 规范中没有定义容器--服务器的接口,各厂商可以根据他们的见解来实现服务器和容器的各自责任。

 

10.容器提供服务: 数据存储

 

容器决定何时载入/储存状态;Container-Managed Persistence(容器管理存储/CMP)

容器负责存储您的 Bean;容器生成必要的类和代码;Bean-Managed Persistence(Bean 管理存储/BMP)Bean 开发人员提供存储代码;开发人员决定 如何存储, 容器仍然决定 何时进行

11.容器提供服务: 事务处理

 

可以由容器代理来实现;容器将得到业务逻辑方法的事务处理需求;容器提供事务控制代码,

也可以由程序员通过代码实现。

 

12.容器提供服务: 其它服务

 

其它服务包括:命名 (Naming);安全 (Security);线程管理 (Thread management);这些服务由容器代理完成将减少应用开发人员的负担。

 

13.分布式对象运算

 

远程对象被作为本地对象来处理:传递信息的方式不变,但开销更大。Enterprise JavaBeans 永远运行在服务器上:对 Bean 的访问永远是远程调用。

 

14.Stub 和 Skeleton

 

EJB 生成:"Stub" 对要传递出去的信息编码;"Tie/Skel" 将接受到的信息解码并传递给目标对象

 

15.分类: Enterprise JavaBeans

 

+---Entity Beans--CMP/BMP

 

Ejb--|

 

+---Session Beans--Stateful/Stateless

 

       会话 Bean (Session Bean):根据 EJB 规范,一个会话 Bean 是:代表单个客户端来执行,可以参与到事务处理中,不直接代表共享于数据库中的数据,但它能访问和更新这些数据,相对而言是短暂存在的。当 EJB 容器失效后就不存在---客户端需要重新建立一个信新的会话对象来继续运算。实体 Bean (Entity Bean):根据 EJB 规范,一个实体 Bean : 提供在数据库中数据的对象视图,允许被多个用户共享存取访问,可以是长期存在 (只要它存在于数据库中)。实体 Bean, 它的主键对象, 以及它的远程引用将能跨 EJB 容器的宕机而存在。

 

16.EJB 类和实例

 

构建 EJB 应用包括来自三方的代码:开发人员编写的代码;由 EJB API 定义的类和接口;由容器自动生成的代码。

 

开发人员编写的代码包括:

Bean (定义了业务逻辑)

Home 接口 (如何查找或创建 bean)

Remote 接口 (如何存取 bean)

其它组件,根据 bean 实际要求

 

17.EJB Home 接口

 

       每个 bean 有一个用于:创建新的 bean 实例、查找现存的 bean (只能是实体 bean)

Remote 接口:定义 bean 的公共接口---只有在 Remote 接口中定义的方法才能被客户端访问。

 

EJB 客户端可以为 servlet, JSP, 应用程序或其它 bean,通过 JNDI 来查找 EJB home 接口,步骤为:

创建一个 JNDI Context (initial context)

使用 JNDI Context 来查找 bean home 接口

使用 bean home 接口来创建/查找 bean 实例

使用 bean 实例完成业务操作

实际的存取 ( EJB) 是通过容器生成的类来完成

 

EJB 架构:客户端对 bean 访问永远不是直接的EJBObject (tie) 是由容器自身提供的:用来帮助管理 bean 的生命周期。

 

EJB 中的角色:

EJB 服务器供应商: 开发并销售 EJB 服务器

EJB 容器供应商: 开发并销售 EJB 容器

Enterprise bean 开发人员: 开发并销售 EJB

应用组装人员: 将不同的 EJB 搭建成应用

部属人员: 使用相应工具在运行环境下配置 EJB

系统管理员: 监视运行时情况

 

 

您学到了哪些?

 

EJB 是构建健壮,可扩展并支持事务处理的分布式对象技术规范有两种类型的 EJB: Session Bean Entity Bean。一个 EJB 服务器使用 EJB 容器;容器来管理其所包容 bean 的生命周期每个 bean 将有三个类: bean , home 接口和 remote 接口。 

 

 

阅读(1885) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~