Java 版 (精华区)
发信人: bali (阿奔), 信区: Java
标 题: 企业级Java应用的新趋势——EJB
发信站: 哈工大紫丁香 (Thu Sep 21 15:40:20 2000) , 转信
一、EJB 在 发 展 中 产 生
企 业 级 应 用 被 广 泛 采 用, 企 业 级 应 用 技 术 在 不 断 发 展, 企 业 级
应 用 模 式 更 在 不 断 变 化。 归 纳 起 来, 主 要 有 以 下 几 种 发 展 趋 势
。
1. 从 传 统 的C/S 模 式 向 三 层、 多 层 分 布 式 应 用 模 式 转 变。
2. 对 象、 组 件 技 术 的 不 断 发 展。
3. 目 录 服 务 功 能 增 强。
4. 大 量 采 用 中 间 件 技 术。
根 据 企 业 级 应 用 的 发 展 趋 势,Sun 提 出 了 一 个Java Platform for
the Enterprise(JPE) 解 决 方 案, 为 企 业 级 应 用 的 发 展 提 供 了 坚 实 的
基 础。 在JPE 中,Enterprise Java Beans (EJB) 是 其 核 心 技 术, 主 要 用 于
简 化 多 层 应 用 系 统 的 开 发, 进 行 大 量 的 事 务 处 理。
EJB 技 术 的 提 出, 为 企 业 级 应 用 提 供 了 一 个 安 全、 可 靠 及 灵
活 的 解 决 方 案。EJB Specification 1.0 刚 一 提 出, 就 得 到 了 包 括IBM、
BEA、Weblogic、Informix、Oracle 等 众 多 厂 商 的 支 持, 可 以 说,EJB 将 是
企 业 级 应 用 的 一 条“ 未 来 之 路”。
二、EJB 组 件 模 型
EJB 组 件 模 型 为 中 间 层 应 用 开 发 提 供 了 一 致 的 基 于 组 件 的
应 用 模 型。 遵 循Java 的“Write once,run anywhere”, 平 台 独 立 性, 是 一
种 开 放 的 应 用 组 件 模 型。 而 目 前 中 间 层 解 决 方 案 一 般 都 是 基
于 专 有 应 用 平 台, 同 时, 需 要 有 大 量 的 代 码 开 发 工 作, 跨 平 台
应 用 困 难。EJB 对 这 些 设 施 进 行 了 标 准 化, 提 供 了 一 个 组 件 运 行
环 境EJB Server。 用 户 不 需 要 自 己 去 编 程,EJB Server 可 以 负 责 处 理
远 过 程 调 用、 事 务 处 理、 安 全 性 操 作、 线 程 和 状 态 管 理, 简 化
了 应 用 开 发 过 程。
EJB 组 件 模 型 增 强 了 基 于 客 户 端 组 件 的Java Beans 组 件 模 型,
适 用 于 整 个 企 业 分 布 式 大 规 模 应 用。
1. Java Beans 组 件 模 型 特 点
Java Beans 组 件 模 型 主 要 是 面 向 客 户 端 的 软 件, 它 支 持 可 移
植 和 可 重 用 的Java 组 件 的 开 发。Java Beans 工 作 于 任 何Java 应 用 开 发
工 具 中。Java 开 发 者 可 以 利 用Java 开 发 工 具 开 发Java Class、Java App
lets 及Java 应 用 程 序。 可 以 认 为,Java Beans 是 一 个 特 殊 的Java Class,
可 以 被 加 入 到 应 用 开 发 工 程 中, 并 被Java 开 发 工 具 处 理 使 用。
在Java 开 发 工 具 中, 开 发 者 可 以 通 过 属 性 表 或 通 过 定 制 的 方
法 来 定 制Java Beans。 多 个Java Beans 可 以 组 合 在 一 起 构 成Java Applet
s 或Java 应 用 程 序, 或 建 立 新 的Java Beans。Java Beans 总 是 在 运 行 时
实 例 化, 并 通 过.jar 文 件 来 初 始 化 其 状 态。 它 支 持 可 视 化 及 非 可
视 化 的 组 件 模 型。
2. EJB 组 件 模 型 特 点
EJB 是Server 端 的Java Beans 组 件 模 型。 它 是 一 种 特 殊 的、 非 可 视
化 的 Java Beans, 运 行 在 服 务 器 上。EJB 同 普 通 的Java Beans 一 样, 可
以 和 其 他Beans 一 起 建 立 新 的Java 应 用。EJB Class 可 以 通 过 其 属 性
表 及 定 制 方 法 来 进 行 处 理 和 定 制。
EJB 组 件 模 型 包 括EJB Server、EJB Container、EJB Object 以 及 诸 多 相
关 特 性。
EJB Server 提 供EJB 应 用 的 运 行 环 境。 它 负 责 管 理 和 协 调 应 用
程 序 资 源 的 分 配。TP Monitor 产 品、CORBA 运 行 系 统、Web Server、 数 据
库 系 统 和 应 用 服 务 器 可 作 为EJB Server。EJB Server 必 须 提 供EJB Conta
iner。
EJB Container 用 于 管 理EJB 对 象 的 类。 它 负 责 对 象 的 生 命 周 期
的 管 理, 实 现 对 象 的 安 全 性, 协 调 分 布 式 事 务 处 理, 并 负 责 对
象 的 上 下 文 切 换。EJB Container 还 可 以 管 理 对 象 的 状 态。 某 些 情 况
下, 对 象 数 据 是 短 暂 的, 只 存 在 于 特 定 的 方 法 调 用 过 程 中, 另
一 些 情 况 下, 对 象 数 据 是 长 久 的, 多 个 访 问 都 要 调 用 此 对 象 数
据。EJB 同 时 支 持 短 暂 对 象 数 据 及 长 久 对 象 数 据。EJB 对 象 被 赋 予
EJB Container。 当 其 被 使 用 时, 您 可 以 通 过 修 改 其 环 境 属 性 来 定
制Beans 运 行 状 态 特 性。 比 如, 开 发 者 可 以 使 用 EJB Container 用 户
接 口 提 供 的 工 具 来 修 改Beans 的 事 务 模 式 及 安 全 属 性。EJB 对 象 一
经 使 用,EJB Container 负 责 管 理EJB 对 象 生 命 周 期、EJB 对 象 安 全 特
性 和 协 调 事 务 处 理。
EJB 规 范 提 供 一 种 机 制, 可 以 通 过 在 运 行 时 设 置 相 应 的 属 性
值 来 定 义 每 一 个EJB 对 象 的 运 行 状 态。 每 一 个EJB 对 象 都 要 提 供D
eployment descriptor, 包 括Entity descriptor 或Session descriptor。
Deployment descriptor object 用 于 设 置EJB 对 象 的 运 行 状 态。 这 些
设 置 值 告 诉EJB Container 如 何 去 管 理 和 控 制EJB 对 象, 它 们 可 以 在
应 用 程 序 组 装 或 应 用 程 序 使 用 时 设 置。
典 型 设 置 属 性 包 括: 生 命 周 期、 持 久 性、 事 务 属 性 和 安 全 特
性。
三、 短 暂 和 长 久EJB
EJB specification 规 定 有 两 种 类 型EJB:Session EJB 和Entity EJB。Sess
ion EJB 是 短 暂 的 对 象, 运 行 在 服 务 器 端, 并 执 行 一 些 应 用 逻 辑
处 理。 它 由 客 户 端 应 用 程 序 建 立, 并 仅 被 该 应 用 所 使 用, 其 数
据 需 要 自 己 来 管 理。
通 常 它 要 完 成 数 据 库 访 问 或 数 据 计 算 等 工 作。Session EJB 支
持 事 务 属 性, 但 是, 当 系 统 停 机 后,Session EJB 不 会 再 被 恢 复。Ent
ity EJB 是 持 久 的 对 象, 可 以 被 其 他 对 象 调 用。 与Session EJB 不 同,
Entity EJB 必 须 在 建 立 时 制 定 一 个 惟 一 的 标 识, 并 提 供 相 应 的 机
制 允 许 客 户 应 用 程 序 根 据Entity EJB 标 识 来 定 位Beans 实 例。 多 个
用 户 可 以 并 发 访 问Entity EJB, 事 务 间 的 协 调 由Container 来 完 成。En
tity EJB 支 持 事 务 处 理, 当 系 统 停 机 时, 也 可 恢 复。EJB 规 范 中 定
义 了 两 种 处 理Entity EJB 的 持 久 性 模 型, 即Beans managed 及Container ma
naged。Beans managed 是 由EJB 自 己 来 管 理 持 久 性。 它 需 要EJB 开 发 者 来
编 写 数 据 库 或 应 用 程 序 的 处 理 逻 辑, 并 加 入 到 类 的ejbcreate()、
ejbremove()、ejbfind()、 ejbload() 和ejbstore() 等 方 法 中。Container managed
是 将EJB 持 久 性 管 理 交 给Container 来 完 成。 开 发 者 一 般 要 在EJB 的D
eployment descriptor 中 的ContainerManagedFields 属 性 中 指 定EJB 实 例 持 久
性 域。 使 用Container managed, 无 需 用 户 知 道Entity 存 储 的 数 据 源,
也 不 需 要 用 户 参 与 复 杂、 烦 琐 的 编 码 工 作。
Entity EJB 在EJB 1.0 规 范 中 是 可 选 的。 同 时,Container managed 只 支
持 简 单 数 据 类 型。 这 些 限 制 在EJB 下 一 个 版 本 中 会 得 以 解 决。
四、EJB Container 的 作 用
EJB Container 在EJB 环 境 下 主 要 起 到 如 下 作 用:
1. EJB Container 负 责 提 供 协 调 管 理、 事 务 处 理 和RMI 等 功 能。 原
则 上 讲,EJB Server 和EJB Container 可 以 由 不 同 厂 商 提 供, 但 目 前,E
JB Server 和 EJB Container 由 一 家 厂 商 提 供。
2. Container 建 立Context, 负 责 切 换 协 调 不 同EJB 对 象。
3. EJB Container 可 以 有 不 同 类 型, 如TP Monitor、DBMS、Web Server 等
。 厂 商 宣 布 支 持EJB, 一 般 是 提 供 不 同 应 用 的Container 系 统。 一 般
而 言,Container 主 要 由 以 下 部 分 组 成:
客 户 应 用 程 序 通 常 不 和EJB 直 接 打 交 道。 它 们 要 通 过Container
提 供 的 接 口, 该 接 口 提 供 了EJB 的 客 户 视 角。
(1) 一 类 接 口 称 为Home interface。Home interface 允 许 客 户 建 立 或
删 除 EJB。 对Entity EJB 来 说,Home interface 还 提 供 定 位 特 定EJB 实 例 的
功 能。
当 用 户 请 求EJB 服 务 时, 它 首 先 要 通 过JNDI 来 定 位 对 象 的Home
interface,EJB 类 及 其Container 对 用 户 来 说 是 透 明 的。Home interface 必
须 提 供 建 立EJB 对 象 的 方 法。 一 旦 用 户 找 到 所 需 的EJB 类 后, 它 就
可 以 通 过 调 用Home interface 中 的 生 成 方 法 建 立EJB 对 象。
(2) EJB 对 象 是Container 提 供 的 EJB 类 的 一 个 实 例, 它 用 来 实 现
EJB 的 远 调 用 接 口。 用 户 总 是 通 过 调 用EJB 远 调 用 方 法 来 执 行EJB
服 务。 通 常 是 使 用JRMI。 用 户 调 用EJB 对 象 时, 由EJB Container 接 受 请
求, 并 将 任 务 交 给 EJB 对 象。 这 种 机 制 保 证 为 用 户 及EJB 提 供 透
明 的 状 态 管 理、 事 务 控 制 及 安 全 性 服 务。
五、EJB 事 务 特 性
EJB 中 存 在6 种 事 务 特 性: TX-NOT-SUPPORTED 此 属 性 指 定EJB 不 支 持
事 务 特 性。 当 用 户 应 用 程 序 在 一 个 事 务 中 调 用EJB 时, 事 务 处 理
将 被 挂 起, 直 到EJB 处 理 结 束。
TX-REQUIRES 此 属 性 指 定EJB 必 须 在 事 务 处 理 环 境 下 执 行。 如 果
用 户 应 用 程 序 使 用 事 务 处 理 环 境, 则EJB 方 法 调 用 用 户 事 务 环
境, 如 果 用 户 应 用 程 序 未 使 用 事 务 处 理 环 境, 则EJB 方 法 调 用 自
动 建 立 一 个 新 的 事 务 处 理。
TX-SUPPORT 此 属 性 指 定EJB 可 以 在 事 务 或 非 事 务 处 理 中 运 行。
如 果 调 用EJB 的 客 户 程 序 支 持 事 务, 则EJB 方 法 将 使 用 用 户 的 事 务
环 境。 如 果 客 户 程 序 未 支 持 事 务, 则EJB 将 支 持 事 务 处 理。
TX-REQUIRES-NEW 此 属 性 指 定EJB 方 法 调 用 必 须 使 用 一 个 新 事 务。
如 果 用 户 程 序 正 在 使 用 事 务, 则 必 须 要 将 它 挂 起, 等 到EJB 方 法
调 用 完 成, 再 继 续 原 事 务。
TX-MANDATORY 此 属 性 指 定 EJB 总 是 在 用 户 应 用 程 序 事 务 中 运 行
。 如 果 用 户 应 用 程 序 未 支 持 事 务, 则 事 务 处 理 服 务 器 将 发 出 T
ransaction Required 例 外 命 令, 同 时 请 求 失 败。
TX-BEAN-MANAGED 此 属 性 要 求EJB 自 己 来 管 理 其 事 务 控 制。 客 户 程
序 通 过 直 接 调 用 事 务 处 理 接 口 来 建 立 事 务 处 理 特 性。
六、 同CORBA 的 映 射
CORBA 是 目 前 分 布 式 对 象 处 理 的 事 实 工 业 标 准, 大 部 分 厂 商
都 宣 布 支 持 CORBA 标 准。 同 样,Sun 在 制 订EJB 规 范 时, 也 考 虑 到COR
BA 应 用 对EJB 的 支 持, 推 出 了EJB 同CORBA 互 相 映 射 的 方 法 。
此 规 范 主 要 用 于 基 于CORBA 对 象 模 型 的EJB 组 件 模 型。 规 范 主
要 规 定 如 下:
1. EJB 中Java RMI 远 程 调 用 接 口 到 基 于IIOP 协 议 的CORBA IDL 的 映
射
2. CORBA COS 命 名 规 则 到EJB 的EJBHome 命 名 规 则 的 映 射
3. EJB 事 务 处 理 到OMG OTS 事 务 处 理 的 映 射
4. EJB 安 全 性 到CORBA 安 全 性 的 映 射
采 用 此 规 范 后, 任 何CORBA 客 户 端( 采 用 任 何CORBA 支 持 的 语 言
程 序) 均 可 以 访 问 基 于CORBA 的EJB。 客 户 应 用 程 序 可 以 在 同 一 个 事
务 中 混 合 调 用 CORBA 及EJB 对 象。 一 个 事 务 可 以 跨 越 位 于 不 同 厂
商 提 供 的 基 于CORBA 的 EJB Server 中 的EJB 对 象。 其 中,CORBA 客 户 端 包
括 两 种 类 型:EJB/CORBA 客 户 端 和CORBA 客 户 端。
EJB-to-CORBA 映 射 规 范, 使 用 户 已 有 的CORBA 应 用 支 持EJB 应 用。
目 前, 已 有 一 些 厂 商 宣 布 支 持 该 规 范。 例 如,Inprise 决 定 将
对EJB 应 用 的 支 持 加 入 其Visibroker 产 品 系 列。Inprise 的Visibroker 主 要
是 面 向 CORBA 应 用。EJB-to-CORBA 映 射 规 范 是EJB 规 范 的 重 要 组 成 部
分。
七、EJB 的 发 展 方 向
Sun 公 布 的EJB 1.0 规 范 是EJB 规 范 的 第 一 个 版 本,EJB 还 会 进 一
步 的 完 善 与 发 展。 下 面 是EJB 的 一 些 发 展 方 向:
1. Javasoft 宣 布 了EJB 1.0 Specification。EJB 1.0 只 规 定 必 须 支 持Se
ssion EJB。EJB 2.0 中,Entity EJB 规 定 也 必 须 支 持。
2. 目 前, 很 多 厂 商 都 宣 布 支 持EJB。 同 时 提 供 了 对Entity EJB 的
支 持。 如IBM 的San Francisco Project。
3. 目 前, 进 程 管 理、 线 程 池、 并 发 控 制 和 资 源 管 理 等 功 能 未
包 含 在EJB 规 范 中。 因 此, 对 这 些 服 务 的 支 持 程 序, 也 就 决 定 了
不 同 厂 商 产 品 的 差 别 与 不 同。 大 多 数 厂 商 都 是 将 自 己 的 产 品
移 植 到EJB Container 中。
4. EJB 的 发 展 方 向 是 要 支 持 多 种 环 境, 包 括:
(1) TP Monitor , 包 括IBM TXSeries(CICS&Encina), BEA Tuxedo
(2) Componet Transaction Server, 如Sybase Jaguar CTS、Microsoft Transacti
on Server
(3) CORBA Platform, 如Borland VisiBroker、Iona Orbix
(4) 数 据 库 管 理 系 统, 如Informix、 Oracle、Sybase
(5) Web Server, 如Java Web Server、Netscape Enterprise Server、 Oracle Ap
plication Server
EJB 1.0 规 范 的 提 出, 使EJB 应 用 成 为 现 实。EJB 是 一 个 组 件 体 系
结 构, 用 于 开 发 和 部 署 面 向 对 象 的 分 布 式 企 业 级Java 应 用。 用E
JB 编 写 的 应 用 可 扩 展 性 好, 支 持 事 务 处 理 及 多 用 户 环 境 下 的 安
全 性。EJB 应 用 程 序 编 写 一 次, 可 在 任 何 支 持EJB 的 服 务 器 平 台 上
运 行。 它 提 供 了 比 以 往 更 好 的 集 成 性 与 互 操 作 性, 因 此, 对 于
高 性 能、 高 可 扩 展 性、 高 安 全 性 的 应 用, 通 过 使 用EJB, 可 以 为
用 户 提 供 更 加 有 效 的 服 务。
--
在时间面前,没有永恒
------一个热爱自由的人
※ 来源:.哈工大紫丁香WWW bbs.hit.edu.cn. [FROM: 211.100.0.28]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:206.633毫秒