企 业 级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 组 件 模 型 增 强 了 基 于 客 户 端 组 件 的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 对 象, 它 们 可 以 在 应 用 程 序 组 装 或 应 用 程 序 使 用 时 设 置。 ----
典 型 设 置 属 性 包 括: 生 命 周 期、 持 久 性、 事 务 属 性 和 安 全 特 性。
---- 通 常 它 要 完 成 数 据 库 访 问 或 数 据 计 算 等 工 作。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 环 境 下 主 要 起 到 如 下 作 用: ---- 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 提 供 透 明 的 状 态 管 理、 事 务 控 制 及 安 全 性 服 务。
---- 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 对 象 模 型 的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 规 范 的 重 要 组 成 部 分。
---- 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, 可 以 为 用 户 提 供 更 加 有 效 的 服 务。 中国计算机世界出版服务公司版权所有 |