EJB-Java服务器端构件模型
(摘自chinaasp.com)
1998 年3 月 在San Francisco 召 开 的JavaOne98 开 发 者 大 会 上,Sun 公 司 正 式 发 布 了 业 界 期 待 已 久 的EJB 1.0 版(Enterprise JavaBeans 1.0) 规 范 说 明, 在 众 多 的 大 公 司 和 开 发 人 员 中 引 起 了 巨 大 的 反 应, 这 标 志 着 用 Java 开 发 企 业 级 应 用 系 统 将 变 得 非 常 简 单。 这 次JavaOne 大 会 也 被 称 之 为“EJB 展 览 会”, 许 多 公 司 纷 纷 表 示 要 推 出 有 关EJB 的 产 品, 已 经 推 出 或 正 准 备 推 出EJB 产 品 的 公 司 有:IBM、Inprise、Gemstone、 Informix、NCR、NetDynamics、Netscape、Novell、Oracle、Persistence Software、 Progress、Secant、Sybase、Symantec、Weblogic 等。 目 前,EJB 已 经 成 为Java 技 术 研 究 中 的 重 点。
一、 EJB 概 要
----EJB 规 范 说 明 定 义 了Java 的 服 务 器 端 构 件 模 型。 目 前, 已 有 很 多 可 供 使 用 的、 由 第 三 方 供 应 商 提 供 的、 用 于 客 户 端 的 构 件, 但 用 于 服 务 器 端 的 构 件 还 不 多。 由 于 服 务 器 端 构 件 缺 乏 或 很 难 构 造, 因 此 基 本 上 每 一 个 开 发 人 员 不 得 不 从 头 开 始 构 造 服 务 器 体 系 结 构。EJB 方 法 扩 充 了Java 的 客 户 端 构 件 模 型JavaBeans, 以 支 持 服 务 器 端 应 用 系 统 的 开 发。 在EJB 规 范 说 明 中, 服 务 器 中 的 很 多 功 能 由EJB 容 器 提 供, 开 发 人 员 可 以 集 中 精 力 开 发 应 用 系 统 的 核 心 功 能。 采 用EJB 技 术 可 以 大 大 减 轻 开 发 服 务 器 端 应 用 系 统 的 工 作 量。 因 此,EJB 规 范 说 明 一 经 发 布, 立 即 引 起 许 多 开 发 人 员 的 极 大 兴 趣。
----Sun 公 司 发 布 的 文 档 中 对EJB 的 定 义 是: EJB 是 用 于 开 发 和 部 署 多 层 结 构 的、 分 布 式 的、 面 向 对 象 的Java 应 用 系 统 的 跨 平 台 的 构 件 体 系 结 构。 采 用EJB 可 以 使 开 发 商 业 应 用 系 统 变 得 容 易, 应 用 系 统 可 以 在 一 个 支 持EJB 的 环 境 中 开 发, 开 发 完 之 后 部 署 在 其 他 的 环 境 中, 随 着 需 求 的 改 变, 应 用 系 统 可 以 不 加 修 改 地 迁 移 到 其 他 功 能 更 强、 更 复 杂 的 服 务 器 上。
----EJB 简 化 了 多 层 体 系 结 构 应 用 系 统 的 开 发 过 程。 在 分 布 式 应 用 系 统 的 开 发 中, 采 用 多 层 体 系 结 构 的 方 法 有 很 多 优 点, 如 增 加 了 应 用 系 统 的 可 伸 缩 性 的、 可 靠 性、 灵 活 性 等。 因 为 服 务 器 端 构 件 可 以 根 据 应 用 需 求 迅 速 地 加 以 修 改, 且 构 件 在 网 络 中 的 位 置 和 应 用 无 关, 因 此 系 统 管 理 员 可 以 很 容 易 地 重 新 配 置 系 统 的 负 载。 多 层 体 系 结 构 非 常 适 合 于 大 数 据 量 的 商 业 事 务 系 统, 特 别 是 在 基 于Web 的 应 用 中, 需 要 多 层 体 系 结 构 支 持 瘦 客 户 机 及 浏 览 器 的 快 速Applet 下 载。 目 前, 越 来 越 多 的 系 统 开 始 采 用 多 层 体 系 结 构 的 方 法。
----EJB 把Java 的“Write once, run anywhere” 思 想 提 到 一 个 新 的 高 度, 服 务 器 端 构 件 在 构 件 执 行 系 统 内 运 行, 规 范 说 明 定 义 了 构 件 执 行 系 统 所 需 要 的 服 务。 遵 从EJB 规 范 说 明 开 发 的 构 件 可 以 在 任 何 一 个 支 持EJB 的 系 统 中 运 行。
---- 通 过 使 用RMI,EJB 支 持 远 程 的 客 户 端 存 取。RMI 是 一 个 高 级 程 序 设 计 接 口, 它 使 得 服 务 器 的 位 置 对 于 客 户 机 来 说 是 透 明 的,RMI 产 生 一 个 对 象, 这 个 对 象 被 安 装 在 客 户 机 系 统 中, 作 为 存 取 服 务 器 对 象 的 代 理 对 象,EJB 开 发 人 员 为 每 一 个 可 存 取 的 接 口 定 义 一 个Java 远 程 接 口。
---- 通 过 使 用IIOP 协 议(Internet Inter ORB Protocol), EJB 也 可 以 和 其 他 的 非Java 客 户 机 进 行 通 信。IIOP 允 许EJB 系 统 和 CORBA 的 集 成,EJB 可 以 存 取CORBA 服 务 器,CORBA 客 户 机 也 可 以 存 取EJB 服 务 器。
---- 一 个 开 发 商 可 以 开 发 一 个 新 的 支 持EJB 的 执 行 系 统, 但 通 常 的 做 法 是 供 应 商 对 已 有 的 系 统 进 行 改 进 以 支 持EJB。 可 以 进 行 改 进 以 支 持EJB 的 系 统 包 括:
数 据 库 管 理 系 统, 如Oracle、Sybase、DB2 等;
Web 应 用 服 务 器, 如Java Web Server、 Netscape Enterprise Server、Oracle Application Server 等;
CORBA 平 台, 如Iona Orbix/OTM、Borland VisiBroker/ITS 等;
事 务 处 理 监 控 器, 如IBM TXSeries (CICS and Encina)、BEA 公 司 的Tuxedo 等;
构 件 事 务 服 务 器, 如Sybase Jaguar CTS 或Microsoft Transaction Server 等。
二、 软 构 件 模 型
---- 软 构 件 模 型 的 思 想 是 创 建 可 重 用 的 构 件 并 将 其 组 合 到 容 器 中, 以 得 到 新 的 应 用 系 统。 构 件 模 型 定 义 了 构 件 的 基 本 体 系 结 构、 构 件 界 面 的 结 构、 与 其 他 构 件 及 容 器 相 互 作 用 的 机 制 等。 利 用 构 件 模 型 规 范 说 明, 构 件 开 发 人 员 开 发 那 些 实 现 了 应 用 系 统 逻 辑 的 构 件, 而 应 用 系 统 开 发 人 员 则 把 这 些 预 先 开 发 好 的 构 件 组 合 成 应 用 系 统, 这 些 应 用 系 统 也 可 以 作 为 新 的 构 件。 软 构 件 模 型 思 想 已 经 在 软 件 开 发 界 迅 速 流 行, 因 为 它 可 以 达 到 以 下 这 些 目 的: 重 用、 高 层 开 发、 通 过 工 具 进 行 自 动 化 开 发, 简 化 开 发 过 程 等。JavaBeans、EJB、COM/DCOM 等 都 是 软 构 件 模 型 的 例 子。
---- 有 两 种 类 型 的 软 构 件 模 型: 客 户 端 构 件 模 型 和 服 务 器 端 构 件 模 型。 客 户 端 构 件 模 型 如JavaBeans 是 专 门 用 于 处 理 程 序 的 表 示 及 用 户 界 面 问 题 的; 服 务 器 端 构 件 模 型 如EJB 则 向 面 向 事 务 的 中 间 件 提 供 基 础 设 施。
---- 服 务 器 端 构 件 模 型 把 构 件 模 型 的 开 发 和 中 间 件 联 系 在 一 起。 企 业 级 应 用 的 中 间 件 以 其 复 杂 性 著 称, 它 不 仅 涉 及 到 应 用 逻 辑、 并 发 性 和 伸 缩 性 问 题, 而 且 涉 及 到 如 何 把 不 兼 容 的 系 统 组 合 在 一 起 的 问 题。 服 务 器 端 构 件 模 型 解 决 了 中 间 件 开 发 的 复 杂 性 问 题, 它 使 中 间 件 开 发 人 员 集 中 于 应 用 系 统 的 逻 辑 部 分, 而 不 用 处 理 同 步、 可 伸 缩 性、 事 务 集 成、 网 络、 分 布 式 对 象 框 架 等 一 些 分 布 式 应 用 系 统 中 存 在 的 复 杂 的 细 节 问 题。
----EJB 构 件 模 型 给 开 发 者 提 供 了 以 下 的 一 些 支 持:
构 件 包 含 应 用 系 统 逻 辑
可 重 用 的 构 件
可 伸 缩 性
资 源 管 理
事 务 支 持
并 发 性 管 理。
三、 EJB 构 件 模 型 的 目 标
----在EJB 1.0 规 范 说 明 中, 列 出 了 设 计EJB 构 件 模 型 的 目 标, 其 中 的 一 些 如 下:
----(1) EJB 将 成 为 用Java 语 言 开 发 分 布 式 的、 面 向 对 象 的 商 业 应 用 系 统 的 标 准 构 件 体 系 结 构,EJB 使 得 通 过 组 合 构 件 得 到 分 布 式 应 用 系 统 成 为 可 能。
----(2) EJB 使 得 应 用 系 统 开 发 更 容 易, 应 用 系 统 开 发 人 员 不 需 要 理 解 底 层 的 事 务 处 理 细 节、 状 态 管 理、 多 线 程、 资 源 共 享 管 理 以 及 其 他 复 杂 的 底 层API 细 节。
----(3) EJB 遵 循Java 的“Write once, run anywhere” 的 原 则, 一 旦 一 个EJB 开 发 完 成 之 后, 那 么 就 可 以 部 署 在 任 何 支 持EJB 的 平 台 上, 而 不 需 要 重 新 编 译 或 对 源 代 码 进 行 修 改。
----(4) EJB 定 义 了 一 个 协 议, 使 得 用 不 同 供 应 商 提 供 的 工 具 开 发 和 部 署 的 构 件 能 在 运 行 时 互 操 作。
----(5) EJB 体 系 结 构 和 已 有 的 服 务 器 平 台、 其 他 的Java API、CORBA 等 兼 容。
----(6) EJB 将 支 持Enterprise Beans 和 其 他 的 非Java 应 用 系 统 的 互 操 作 性。
----采 用EJB 开 发 应 用 系 统 有 很 多 优 点, 如 标 准 的Java 技 术 使 得 应 用 系 统 可 以 在 许 多 不 同 的 服 务 器 平 台 上 运 行; 修 改 应 用 系 统 变 得 容 易, 对 单 个 构 件 进 行 增 加、 修 改、 删 除 等 操 作, 对 应 用 系 统 体 系 结 构 的 影 响 很 小; 应 用 系 统 经 过 划 分 之 后, 使 得 构 件 之 间 相 互 独 立, 又 可 以 相 互 协 作, 提 供 给 用 户 的 是 该 用 户 所 需 要 的 构 件; 应 用 系 统 的 开 发 变 得 容 易, 基 本 上 是 即 插 即 用 的 方 式; 应 用 系 统 从 本 质 上 说 是 可 伸 缩 的, 可 以 运 行 在 多 线 程、 多 处 理 机 的 环 境 中; EJB 可 以 在 新 的 应 用 系 统 中 得 到 重 用, 减 少 了 开 发 时 间。
----当 然, 和 其 他 的 新 技 术 一 样,EJB 也 存 在 一 些 缺 点, 主 要 有:EJB 的 数 量 可 能 非 常 多, 以 至 在 软 件 开 发 库 中 很 难 对 这 些EJB 进 行 跟 踪 和 管 理; 如 果 应 用 开 发 人 员 不 能 正 确 地 使 用EJB, 可 能 导 致 不 恰 当 的 应 用 系 统 设 计, 结 果 使 得 应 用 系 统 的 总 体 性 能 下 降; 除 非JVM 及 编 译 器 的 性 能 得 到 提 高, 否 则EJB 应 用 系 统 的 性 能 仍 将 是 一 个 问 题; 由 于EJB 技 术 出 现 时 间 不 长, 因 此 目 前 可 用 的EJB 还 不 多, 要 想 得 到 大 量 的 商 业 性EJB 还 需 要 一 段 时 间。
四、 EJB 和 其 他 技 术 的 关 系
----1. EJB 和JavaBeans 的 关 系
----很 多 人 往 往 把JavaBeans 和EJB 混 淆,JavaBeans 提 供 了 基 于 构 件 的 开 发 机 制, 一 般JavaBeans 是 可 视 化 的 构 件, 也 有 一 些JavaBeans 是 非 可 视 化 的,JavaBeans 可 以 在 多 个 应 用 系 统 中 重 用。 一 个 标 准 的JavaBean 是 一 个 客 户 端 构 件, 在 运 行 时 不 能 被 其 他 客 户 机 程 序 存 取 或 操 作。 但 客 户 端 的JavaBeans 容 器 可 以 根 据 JavaBeans 的 属 性、 方 法、 事 件 的 定 义 在 设 计 时 或 运 行 时 对JavaBeans 进 行 操 作,JavaBeans 不 一 定 要 用 于Client/Server 系 统。
----EJB 没 有 用 户 界 面, 并 完 全 位 于 服 务 器 端,EJB 可 以 由 多 个JavaBean 组 成, 规 范 详 细 说 明 了EJB 容 器 需 要 满 足 的 需 求 以 及 如 何 与EJB 构 件 相 互 协 作。EJB 可 以 和 远 程 的 客 户 端 程 序 通 信, 并 提 供 一 定 的 功 能。 根 据 规 范 说 明,EJB 是Client/Server 系 统 的 一 部 分, 如 果 不 和 客 户 端 程 序 交 互,EJB 一 般 不 执 行 具 体 的 功 能,EJB 和JavaBeans 的 一 个 重 要 区 别 是EJB 提 供 了 网 络 功 能。
----2. EJB 和CORBA 的 关 系
----根 据 规 范 说 明 中 的 需 求, 以 下 的 一 些 功 能 是 需 要 的:
一 个CORBA 客 户 机( 用CORBA 支 持 的 语 言 写 的 程 序) 可 以 存 取 基 于CORBA 的EJB 服 务 器 上 的 构 件。
一 个 客 户 机 在 一 个 事 务 过 程 中 可 以 同 时 调 用CORBA 和EJB 对 象。
一 个 事 务 可 以 同 时 利 用 多 个 由 不 同 开 发 商 提 供 的 基 于CORBA 的EJB 服 务 器。
---- 为 了 保 证 多 个 开 发 商 之 间 的 基 于CORBA 的EJB 产 品 之 间 的 互 操 作 性, 规 范 说 明 定 义 了EJB 到CORBA 的 映 射, 分 为 四 个 部 分:
----(1) 分 布 映 射: 定 义 了EJB 和CORBA 对 象 之 间 的 关 系, 以 及EJB 规 范 说 明 中 定 义 的Java RMI 远 程 接 口 到OMG IDL 的 映 射。
----(2) 命 名 映 射: 说 明 了 如 何 利 用COS 命 名 服 务 来 确 定EJB Home 对 象。
----(3) 事 务 映 射: 定 义 了EJB 的 事 务 支 持 到 OMG Object Transaction Service(OTS) v1.1 的 映 射。
----(4) 安 全 性 映 射: 定 义 了EJB 中 的 安 全 性 特 征 到CORBA 安 全 性 的 映 射。
---- 映 射 确 保 了 不 管 哪 一 种 类 型 的 客 户 机, 通 过 生 成 相 同 的 字 节 流, 可 以 和 基 于CORBA 的EJB 服 务 器 进 行 互 操 作。
---- 从 以 上 的 论 述 中 可 以 知 道, 对 于EJB 服 务 器 来 说, 有 两 种 类 型 的 客 户 机 可 以 使 用EJB:
----(1) EJB/CORBA 客 户 机: 一 个 使 用EJB API 的Java 客 户 机。 客 户 机 利 用JNDI 确 定 对 象, 利 用IIOP 协 议 上 的Java RMI 来 调 用 远 程 方 法, 其 中CORBA IDL 的 使 用 是 隐 含 的, 也 就 是 说, 开 发 人 员 只 使 用Java 代 码, 开 发 客 户 机 程 序 时 可 以 不 用 了 解CORBA 及 其 IDL 知 识。
----(2) 纯CORBA 客 户 机: 用CORBA IDL 支 持 的 任 何 语 言 写 的 客 户 机。 客 户 机 用COS 命 名 服 务 来 确 定 对 象, 用CORBA IDL 来 调 用 远 程 方 法, 用 对 象 事 务 服 务OTS 来 执 行 事 务, 其 中 程 序 设 计 人 员 要 创 建 一 个IDL 文 件, 即CORBA IDL 的 使 用 是 显 式 的。
----3. EJB 和 网 络 计 算 由JavaBeans 构 造 的 应 用 系 统 可 以 根 据 用 户 的 需 求 分 解 成 不 同 的 构 件, 根 据 用 户 当 前 所 需 要 的 功 能 提 供 相 关 的 构 件, 并 随 着 用 户 新 的 需 求 随 时 下 载 新 的 构 件, 而 用 户 没 有 用 到 其 功 能 的 构 件 可 以 驻 留 在 服 务 器 上, 这 就 是 网 络 计 算 所 倡 导 的 概 念。
---- 很 多 人 并 没 有 完 全 理 解Java 的 概 念, 他 们 认 为 为 了 在 一 个 客 户 端 上 运 行Java 程 序, 需 要 把 一 个 庞 大 的、 可 能 达 几 兆 字 节 的Java 应 用 程 序 一 次 性 通 过 网 络 传 输 到 客 户 端。 事 实 上, 这 也 是 一 些 开 发 人 员 计 划 用Java 改 写 旧 的 应 用 系 统 时 易 犯 的 错 误。
---- 在 网 络 计 算 环 境 中 利 用Java 的 最 好 途 径 是 由EJB 提 供 服 务 器 端 的 构 件, 而 由JavaBeans 提 供 客 户 端 的 构 件, 两 者 结 合 在 一 起, 将 向“ 网 络 就 是 计 算 机” 之 路 迈 出 一 大 步。
五、 结 论
---- 只 有 把Java 应 用 于 服 务 器 端 的 应 用 系 统 开 发 才 能 真 正 体 现Java 的 威 力,EJB 是Java 的 服 务 器 端 的 构 件 模 型, 该 模 型 保 证 开 发 出 来 的 构 件 可 以 被 部 署 在 任 何 支 持EJB 规 范 说 明 的 系 统 中, 即 使 该 系 统 是 由 不 同 的 开 发 商 提 供 的。 采 用EJB 可 以 提 高 开 发 人 员 的 生 产 率, 构 件 开 发 人 员 和 应 用 开 发 人 员 不 需 要 实 现 系 统 中 的 一 些 复 杂 的 逻 辑 结 构, 因 为 构 件 的 容 器 已 提 供 对 这 些 服 务 的 自 动 管 理 和 控 制, 采 用EJB 开 发 的 应 用 系 统 不 用 修 改 就 可 以 从 一 个 服 务 器 迁 移 到 另 一 个 功 能 更 强 的 服 务 器 上。
|