企 业 级Java 应 用 的 新 趋 势 ——EJB

张 光 业


一、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 Applets 及Java 应 用 程 序。 可 以 认 为,Java Beans 是 一 个 特 殊 的Java Class, 可 以 被 加 入 到 应 用 开 发 工 程 中, 并 被Java 开 发 工 具 处 理 使 用。

---- 在Java 开 发 工 具 中, 开 发 者 可 以 通 过 属 性 表 或 通 过 定 制 的 方 法 来 定 制Java Beans。 多 个Java Beans 可 以 组 合 在 一 起 构 成Java Applets 或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 Container。

---- EJB Container 用 于 管 理EJB 对 象 的 类。 它 负 责 对 象 的 生 命 周 期 的 管 理, 实 现 对 象 的 安 全 性, 协 调 分 布 式 事 务 处 理, 并 负 责 对 象 的 上 下 文 切 换。EJB Container 还 可 以 管 理 对 象 的 状 态。 某 些 情 况 下, 对 象 数 据 是 短 暂 的, 只 存 在 于 特 定 的 方 法 调 用 过 程 中, 另 一 些 情 况 下, 对 象 数 据 是 长 久 的, 多 个 访 问 都 要 调 用 此 对 象 数 据。EJB 同 时 支 持 短 暂 对 象 数 据 及 长 久 对 象 数 据。EJB 对 象 被 赋 予 EJB Container。 当 其 被 使 用 时, 您 可 以 通 过 修 改 其 环 境 属 性 来 定 制Beans 运 行 状 态 特 性。 比 如, 开 发 者 可 以 使 用 EJB Container 用 户 接 口 提 供 的 工 具 来 修 改Beans 的 事 务 模 式 及 安 全 属 性。EJB 对 象 一 经 使 用,EJB Container 负 责 管 理EJB 对 象 生 命 周 期、EJB 对 象 安 全 特 性 和 协 调 事 务 处 理。

---- EJB 规 范 提 供 一 种 机 制, 可 以 通 过 在 运 行 时 设 置 相 应 的 属 性 值 来 定 义 每 一 个EJB 对 象 的 运 行 状 态。 每 一 个EJB 对 象 都 要 提 供Deployment descriptor, 包 括Entity descriptor 或Session descriptor。

---- Deployment descriptor object 用 于 设 置EJB 对 象 的 运 行 状 态。 这 些 设 置 值 告 诉EJB Container 如 何 去 管 理 和 控 制EJB 对 象, 它 们 可 以 在 应 用 程 序 组 装 或 应 用 程 序 使 用 时 设 置。

---- 典 型 设 置 属 性 包 括: 生 命 周 期、 持 久 性、 事 务 属 性 和 安 全 特 性。

三、 短 暂 和 长 久EJB

---- EJB specification 规 定 有 两 种 类 型EJB:Session EJB 和Entity EJB。Session EJB 是 短 暂 的 对 象, 运 行 在 服 务 器 端, 并 执 行 一 些 应 用 逻 辑 处 理。 它 由 客 户 端 应 用 程 序 建 立, 并 仅 被 该 应 用 所 使 用, 其 数 据 需 要 自 己 来 管 理。

---- 通 常 它 要 完 成 数 据 库 访 问 或 数 据 计 算 等 工 作。Session EJB 支 持 事 务 属 性, 但 是, 当 系 统 停 机 后,Session EJB 不 会 再 被 恢 复。Entity EJB 是 持 久 的 对 象, 可 以 被 其 他 对 象 调 用。 与Session EJB 不 同,Entity EJB 必 须 在 建 立 时 制 定 一 个 惟 一 的 标 识, 并 提 供 相 应 的 机 制 允 许 客 户 应 用 程 序 根 据Entity EJB 标 识 来 定 位Beans 实 例。 多 个 用 户 可 以 并 发 访 问Entity EJB, 事 务 间 的 协 调 由Container 来 完 成。Entity EJB 支 持 事 务 处 理, 当 系 统 停 机 时, 也 可 恢 复。EJB 规 范 中 定 义 了 两 种 处 理Entity EJB 的 持 久 性 模 型, 即Beans managed 及Container managed。Beans managed 是 由EJB 自 己 来 管 理 持 久 性。 它 需 要EJB 开 发 者 来 编 写 数 据 库 或 应 用 程 序 的 处 理 逻 辑, 并 加 入 到 类 的ejbcreate()、ejbremove()、ejbfind()、 ejbload() 和ejbstore() 等 方 法 中。Container managed 是 将EJB 持 久 性 管 理 交 给Container 来 完 成。 开 发 者 一 般 要 在EJB 的Deployment 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 可 以 由 不 同 厂 商 提 供, 但 目 前,EJB 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 总 是 在 用 户 应 用 程 序 事 务 中 运 行。 如 果 用 户 应 用 程 序 未 支 持 事 务, 则 事 务 处 理 服 务 器 将 发 出 Transaction Required 例 外 命 令, 同 时 请 求 失 败。

---- TX-BEAN-MANAGED 此 属 性 要 求EJB 自 己 来 管 理 其 事 务 控 制。 客 户 程 序 通 过 直 接 调 用 事 务 处 理 接 口 来 建 立 事 务 处 理 特 性。

六、 同CORBA 的 映 射

---- CORBA 是 目 前 分 布 式 对 象 处 理 的 事 实 工 业 标 准, 大 部 分 厂 商 都 宣 布 支 持 CORBA 标 准。 同 样,Sun 在 制 订EJB 规 范 时, 也 考 虑 到CORBA 应 用 对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 只 规 定 必 须 支 持Session 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 Transaction Server

---- (3) CORBA Platform, 如Borland VisiBroker、Iona Orbix

---- (4) 数 据 库 管 理 系 统, 如Informix、 Oracle、Sybase

---- (5) Web Server, 如Java Web Server、Netscape Enterprise Server、 Oracle Application Server

---- EJB 1.0 规 范 的 提 出, 使EJB 应 用 成 为 现 实。EJB 是 一 个 组 件 体 系 结 构, 用 于 开 发 和 部 署 面 向 对 象 的 分 布 式 企 业 级Java 应 用。 用EJB 编 写 的 应 用 可 扩 展 性 好, 支 持 事 务 处 理 及 多 用 户 环 境 下 的 安 全 性。EJB 应 用 程 序 编 写 一 次, 可 在 任 何 支 持EJB 的 服 务 器 平 台 上 运 行。 它 提 供 了 比 以 往 更 好 的 集 成 性 与 互 操 作 性, 因 此, 对 于 高 性 能、 高 可 扩 展 性、 高 安 全 性 的 应 用, 通 过 使 用EJB, 可 以 为 用 户 提 供 更 加 有 效 的 服 务。


中国计算机世界出版服务公司版权所有