EJB3.0实例教程.doc
|
|
- 柔马 封
- 7 years ago
- Views:
Transcription
1 Jboss EJB3.0 实 例 教 程
2 第 一 章 前 言 本 教 程 适 合 人 群 联 系 作 者 EJB3.0 实 例 教 程 官 方 MSN 群 版 权 声 明...5 第 二 章 运 行 环 境 配 置 下 载 与 安 装 运 行 一 个 EJB3 例 子 在 独 立 的 TOMCAT 中 调 用 EJB 发 布 在 JBOSS 中 的 WEB 应 用 调 用 EJB 如 何 获 取 最 新 的 内 嵌 EJB3 的 JBOSS 版 本...11 第 三 章 基 础 知 识 学 习 熟 悉 JBOSS 的 目 录 结 构 JBOSS 中 的 部 署 如 何 进 行 EJB 打 包 如 何 进 行 WEB 应 用 打 包 使 用 了 第 三 方 类 库 的 EJB 如 何 打 包 共 用 了 第 三 方 类 库 的 J2EE 项 目 如 何 打 包 如 何 恢 复 本 书 配 套 例 子 的 开 发 环 境 如 何 对 EJB3 进 行 调 试...22 第 四 章 会 话 BEAN(SESSION BEAN) STATELESS SESSION BEANS( 无 状 态 BEAN) 开 发 开 发 只 存 在 Remote 接 口 的 无 状 态 Session Bean 开 发 只 存 在 Local 接 口 的 无 状 态 Session Bean 开 发 存 在 Remote 与 Local 接 口 的 无 状 态 Session Bean STATEFUL SESSION BEANS( 有 状 态 BEAN) 开 发 STATELESS SESSION BEAN 与 STATEFUL SESSION BEAN 的 区 别 如 何 改 变 SESSION BEAN 的 JNDI 名 称 SESSION BEAN 的 生 命 周 期 拦 截 器 (INTERCEPTOR) 依 赖 注 入 (DEPENDENCY INJECTION) 定 时 服 务 (TIMER SERVICE) 安 全 服 务 (SECURITY SERVICE) 自 定 义 安 全 域...59 第 五 章 消 息 驱 动 BEAN (MESSAGE DRIVEN BEAN)...61 第 六 章 实 体 BEAN(ENTITY BEAN) 实 体 BEAN 的 组 成 文 件 PERSISTENCE.XML 配 置 JBOSS 数 据 源 的 配 置 MySql 数 据 源 的 配 置 Ms Sql Server2000 数 据 源 的 配 置...66
3 6.3 实 体 BEAN 发 布 前 的 准 备 工 作 单 表 映 射 的 实 体 BEAN 持 久 化 实 体 管 理 器 ENTITYMANAGER Entity 获 取 find() 或 getreference() 添 加 persist() 更 新 Merge() 删 除 Remove() 执 行 EJB3 QL 操 作 createquery() 执 行 SQL 操 作 createnativequery() 刷 新 实 体 refresh() 检 测 实 体 当 前 是 否 被 管 理 中 contains() 分 离 所 有 当 前 正 在 被 管 理 的 实 体 clear() 将 实 体 的 改 变 立 刻 刷 新 到 数 据 库 中 flush() 获 取 持 久 化 实 现 者 的 引 用 getdelegate( ) 关 系 / 对 象 映 射 映 射 的 表 名 或 列 名 与 数 据 库 保 留 字 同 名 时 的 处 理 一 对 多 及 多 对 一 映 射 一 对 一 映 射 多 对 多 映 射 使 用 参 数 查 询 命 名 参 数 查 询 位 置 参 数 查 询 Date 参 数 EJB3 QL 语 言 大 小 写 敏 感 性 (Case Sensitivity) 排 序 (order by) 查 询 部 分 属 性 查 询 中 使 用 构 造 器 (Constructor) 聚 合 查 询 (Aggregation) 关 联 (join) 比 较 Entity 批 量 更 新 (Batch Update) 批 量 删 除 (Batch Remove) 使 用 操 作 符 NOT 使 用 操 作 符 BETWEEN 使 用 操 作 符 IN 使 用 操 作 符 LIKE 使 用 操 作 符 IS NULL 使 用 操 作 符 IS EMPTY 使 用 操 作 符 EXISTS 字 符 串 函 数 计 算 函 数 子 查 询 结 果 集 分 页...130
4 6.9 调 用 存 储 过 程 调 用 无 返 回 值 的 存 储 过 程 调 用 返 回 单 值 的 存 储 过 程 调 用 返 回 表 全 部 列 的 存 储 过 程 调 用 返 回 部 分 列 的 存 储 过 程 事 务 管 理 服 务 ENTITY 的 生 命 周 期 和 状 态 生 命 周 期 回 调 事 件 在 外 部 类 中 实 现 回 调 在 Entity 类 中 实 现 回 调 复 合 主 键 (COMPOSITE PRIMARY KEY) 实 体 继 承 每 个 类 分 层 结 构 一 张 表 (table per class hierarchy) 每 个 子 类 一 张 表 (table per subclass) 每 个 具 体 类 一 张 表 (table per concrete class) 第 七 章 WEB 服 务 (WEB SERVICE) WEB SERVICE 的 创 建 WEB SERVICE 的 客 户 端 调 用 用 java 语 言 调 用 Web Service 用 asp 调 用 Web Service 第 八 章 使 用 EJB3.0 构 建 轻 量 级 应 用 框 架 在 WEB 中 使 用 EJB3.0 框 架 如 何 使 用 Session Bean 如 何 使 用 Message Driven Bean 如 何 使 用 依 赖 注 入 (dependency injection) 如 何 使 用 Entity Bean...187
5 第 一 章 前 言 期 待 已 久 的 EJB3.0 最 终 规 范 已 经 发 布 了 虽 然 EJB3.0 最 终 规 范 出 来 了 一 段 时 间, 但 对 EJB3.0 的 应 用 还 停 留 在 介 绍 之 中, 应 用 实 例 更 是 少 之 又 少, 所 以 作 者 拟 写 本 书, 以 简 单 的 实 例 展 现 EJB3.0 的 开 发 过 程, 希 望 对 大 家 有 所 帮 助 EJB3 最 激 动 人 心 的 是 POJO 编 程 模 型, 我 想 对 开 发 人 员 的 影 响 将 是 非 常 大 的, 因 为 他 降 低 了 开 发 人 员 编 写 EJB 的 要 求 EJB3 的 bean 类 将 更 像 常 规 的 Java bean 不 要 求 像 过 去 那 样 实 现 特 殊 的 回 调 界 面 或 者 扩 展 EJB 类 所 以 它 将 使 EJB 的 开 发 更 像 常 规 的 Java 开 发 作 者 对 EJB3.0 接 触 的 时 间 很 短, 所 以 一 些 新 的 概 念 和 知 识 理 解 也 难 免 有 误, 有 些 概 念 和 语 义 把 握 的 不 是 很 准, 希 望 在 这 方 面 有 经 验 和 了 解 的 朋 友 批 评 指 正, 欢 迎 多 提 意 见 因 为 JBOSS EJB3.0 产 品 常 未 成 熟, 本 教 程 随 着 新 产 品 的 推 出 将 有 所 改 动, 请 密 切 关 注! 1.1 本 教 程 适 合 人 群 本 教 程 适 合 具 有 Java 语 言 基 础 的 EJB 初 学 者 有 读 者 来 邮 件 问 需 不 需 要 先 学 EJB2.x, 作 者 明 确 地 告 诉 你 不 用 学 了 随 着 EJB3 的 发 展,EJB2.x 将 会 逐 步 成 为 历 史 1.2 联 系 作 者 黎 活 明, 广 东 佛 山 人, 毕 业 于 中 国 农 业 大 学, 一 直 从 事 于 B/S 系 统 架 构 工 作,06 年 11 月 离 开 游 易 航 空 旅 行 网, 成 为 一 名 自 由 职 业 者, 同 时 兼 任 某 公 司 的 技 术 总 监 电 子 邮 件 1.3 EJB3.0 实 例 教 程 官 方 MSN 群 MSN 群 账 号 添 加 该 账 号 到 你 的 MSN 中 即 可 加 入 群, 在 群 中 你 可 以 和 大 家 一 起 交 流 学 习 的 经 验, 技 术 的 最 新 发 展 等 1.4 版 权 声 明 本 电 子 书 的 内 容 全 部 为 版 权 作 品, 仅 供 个 人 研 究 和 学 习 之 用, 不 得 用 于 任 何 商 业 目 的, 未 经 作 者 书 面 许 可, 不 得 以 其 他 任 何 方 式 进 行 出 版 篡 改 编 辑 未 经 作 者 书 面 许 可, 任 何 商 业 培 训 机 构 不 得 使 用 本 电 子 书 作 为 培 训 教 程, 否 则 将 依 法 追 究 其 法 律 责 任
6 第 二 章 运 行 环 境 配 置 2.1 下 载 与 安 装 1> 下 载 安 装 JDK > 下 载 安 装 开 发 工 具 JBossIDE( 内 含 Eclipse 3.2), 直 接 解 压 缩 即 可 完 成 安 装 想 使 用 中 文 的 朋 友 可 以 下 载 中 文 语 言 包 NLpack1-eclipse-SDK-3.2-win32.zip 下 载 路 径 : /NLpack1-eclipse-SDK-3.2-win32.zip 解 压 语 言 包, 把 features 及 plugins 文 件 夹 拷 贝 复 盖 JBossIDE 安 装 目 录 下 的 features 及 plugins 文 件 夹 如 果 汉 化 失 败, 可 能 是 你 安 装 语 言 包 之 前 运 行 过 eclipse, 解 决 办 法 是 : 把 eclipse 安 装 目 录 下 的 configuration 文 件 夹 删 除, 从 JBossIDE 安 装 包 中 解 压 出 configuration 文 件 夹, 把 configuration 文 件 夹 拷 贝 到 JBossIDE 安 装 目 录 下 3> 下 载 和 安 装 JBOSS GA 服 务 器 文 件 下 载, 这 里 要 注 意 : 最 好 不 要 用 下 载 工 具 下 载, 直 接 通 过 目 标 另 存 为 下 载 安 装 方 法 : 双 击 jems-installer cr1.jar 文 件, 或 者 在 DOS 命 令 下 执 行 : java -jar G:\soft\jems-installer CR1.jar,G:\soft 为 Jboss 安 装 文 件 所 在 目 录 安 装 界 面 如 下 : 这 一 步 是 让 你 选 择 安 装 语 言, 以 后 点 Next 并 同 意 许 可 协 议, 直 到 选 择 安 装 目 录 ( 如 下 图 )
7 在 国 外 的 技 术 论 坛 上, 开 发 者 建 议 不 要 安 装 在 Program Files 目 录, 否 则 一 些 应 用 会 导 致 莫 名 的 错 误 这 里 大 家 就 安 装 在 别 的 目 录 吧 如 C:\JavaServer\jboss 跟 着 选 择 一 个 安 装 类 型, 本 文 选 择 带 集 群 功 能 的 安 装 选 项 ejb3-clustered, 如 下 图 点 下 一 步, 直 到 出 现 下 图. 在 Name 输 入 栏 中 输 入 all
8 点 下 一 步, 直 到 出 现 下 图 : 四 个 选 框 都 选 上 点 下 一 步 就 开 始 安 装 了 安 装 完 后 请 在 系 统 变 量 里 添 加 JBOSS_HOME 变 量, 值 为 Jboss 的 安 装 路 径 如 下 图
9 现 在 验 证 安 装 是 否 成 功 在 Dos 命 令 窗 口 下 执 行 : C:\JavaServer\jboss\bin\run c all 这 个 命 令 用 作 启 动 jboss 观 察 控 制 台 有 没 有 Java 的 例 外 抛 出 如 果 没 有 例 外 并 看 到 下 图, 恭 喜 你, 安 装 成 功 了
10 你 可 以 输 入 来 到 Jboss 的 欢 迎 主 页 在 JBoss Management 栏 中 点 击 JMX Console 进 入 Jboss 的 管 理 界 面, 这 里 需 要 你 输 入 用 户 名 及 密 码, 如 果 你 在 安 装 的 时 候 按 照 教 程 设 置 了 Jboss 管 理 台 用 户 名 及 密 码, 那 么 用 户 名 及 密 码 都 是 admin 如 果 启 动 jboss 出 现 例 外, 先 看 看 jboss 所 用 端 口 有 没 有 被 占 ( 如 1099,1098,8080, 8083 等 端 口 ) 可 以 下 载 端 口 查 看 器 (Active Ports) 进 行 检 查, 如 果 端 口 被 占 用 就 关 闭 此 进 程 确 定 不 是 端 口 被 占 用, 那 很 大 可 能 是 你 的 JDK 安 装 不 正 确 怎 么 排 错, 你 自 己 看 着 办 吧 2.2 运 行 一 个 EJB3 例 子 服 务 安 装 成 功 了, 得 来 一 个 真 家 伙 试 试 在 源 代 码 的 HelloWorld 文 件 夹 下 ( 源 代 码 下 载 : 把 HelloWorld.jar 拷 贝 到 jboss 安 装 目 录 /server/all/deploy/ 目 录 下, jboss 支 持 热 部 署,HelloWorld 会 被 发 现, 并 自 动 完 成 部 署 接 下 来 继 续 把 EJBTest 文 件 夹 下 的 EJBTest.war 拷 贝 到 jboss 安 装 目 录 /server/all/deploy/ 目 录 下 在 浏 览 器 上 输 入 : 怎 样? 看 见 什 么 了 2.3 在 独 立 的 Tomcat 中 调 用 EJB 在 正 式 的 生 产 环 境 下, 大 部 分 调 用 EJB 的 客 户 端 所 在 的 服 务 器 都 为 独 立 的 Tomcat 或 Resin 下 面 介 绍 如 何 在 独 立 的 Tomcat 服 务 器 中 调 用 Jboss 中 的 EJB 在 独 立 的 Tomcat 服 务 器 中 调 用 EJB 需 要 有 以 下 步 骤 : 1> 根 据 应 用 的 需 要, 把 调 用 EJB 所 依 赖 的 Jar 包 拷 贝 到 tomcat 下 的 /shared/lib 目 录 或 WEB 应 用 的 WEB-INF/lib 下, 所 依 赖 的 Jar 一 般 在 jboss 安 装 目 录 的 client,/server/all/deploy/jboss-aop-jdk50.deployer, /server/all/deploy/ejb3.deployer,/lib/endorsed 等 文 件 夹 下 下 面 的 jar 文 件 是 必 需 的 : [jboss 安 装 目 录 ]\client\jbossall-client.jar [jboss 安 装 目 录 ]\client\jboss-remoting.jar [jboss 安 装 目 录 ]\client\jboss-aop-jdk50-client.jar [jboss 安 装 目 录 ]\client\jboss-aspect-jdk50-client.jar [jboss 安 装 目 录 ]\client\jboss-ejb3-client.jar [jboss 安 装 目 录 ]\client\jboss-ejb3x.jar [jboss 安 装 目 录 ]\client\jboss-annotations-ejb3.jar 2> 把 调 用 的 EJB 接 口 拷 贝 到 应 用 的 /WEB-INF/classes/ 目 录 下 注 意 : 在 此 环 境 下 不 能 调 用 EJB 的 Local 接 口, 因 为 他 与 JBOSS 不 在 同 一 个 VM 中 2.4 发 布 在 JBOSS 中 的 WEB 应 用 调 用 EJB 有 些 调 用 EJB 的 WEB 应 用 是 直 接 发 布 在 Jboss 集 成 环 境 下, 本 教 程 的 客 户 端 调 用 例 子 就 是 发 布 在 Jboss 中 在 Jboss 下 发 布 WEB 应 用, 需 要 把 WEB 应 用 打 包 成 war 文 件 另 外 在 此 环 境 下 调 用 EJB 不 需 要 把 EJB 的 接 口 类 放 入 /WEB-INF/classes/ 目 录 中, 否 则 调 用 Stateful Bean 就 会 发 生 类 型 冲 突, 引 发 下 面 的 例 外 java.lang.classcastexception: $Proxy84 org.apache.jsp.statefulbeantest_jsp._jspservice(org.apache.jsp.statefulbeantest_jsp:55) 注 意 : 在 此 环 境 下,EJB 的 Local 或 Remote 接 口 都 可 以 被 调 用
11 2.5 如 何 获 取 最 新 的 内 嵌 EJB3 的 JBOSS 版 本 有 时 候 内 嵌 EJB3 的 JBOSS 在 官 方 网 站 上 发 布 有 些 慢, 如 果 你 着 急 需 要, 可 以 从 Jboss 的 版 本 库 中 获 取 获 取 的 方 法 很 简 单, 首 先 我 们 得 安 装 一 个 版 本 控 制 软 件 TortoiseSVN, 下 载 路 径 (window 版 本 ): 双 击 进 行 安 装, 安 装 完 后 需 要 重 启 机 器, 软 件 的 菜 单 通 过 右 键 属 性 菜 单 进 入 喜 欢 用 中 文 的 朋 友 还 可 以 再 下 载 中 文 语 言 包 安 装 完 后 需 要 设 置 语 言 选 项 才 可 以 显 示 中 文, 方 法 是 : 随 便 在 桌 面 空 白 处 右 击 鼠 标, 在 出 现 的 属 性 菜 单 中 点 击 TortoiseSVN - Settins, 在 出 现 的 属 性 窗 口 中 选 择 简 体 中 文, 如 下 图 所 示 : 下 面 我 们 就 开 始 从 Jboss 版 本 库 中 获 取 最 新 版 的 Jboss 源 文 件 如 我 们 要 获 取 JBoss_4_0_5_GA 版 的 源 文 件 他 的 版 本 库 路 径 为 : 首 先 我 们 建 一 个 用 于 存 放 Jboss 源 文 件 的 文 件 夹, 然 后 在 文 件 夹 上 右 击 鼠 标, 在 跳 出 的 属 性 菜 单 中 选 择 SVN Checkout ( 中 文 :SVN 检 出 ), 在 出 现 的 对 话 框 中 填 入 如 下 图 :
12 点 击 确 定 后, 程 序 就 开 始 从 版 本 库 中 获 取 源 文 件 文 件 大 小 有 70M 多, 你 就 慢 慢 下 载 吧 下 载 完 后, 进 入 build 文 件 夹, 执 行 build.bat 批 处 理 命 令, 程 序 就 开 始 进 行 编 绎, 这 过 程 需 要 十 来 分 钟 成 功 执 行 完 后, 在 build/output 文 件 夹 生 成 了 两 个 Jboss 发 行 版 ( jboss ga 和 jboss ga-ejb3), jboss ga-ejb3 内 嵌 EJB3,jboss GA 不 带 EJB3 把 jboss ga-ejb3 拷 贝 到 某 个 目 录 中 就 可 以 直 接 使 用 了 第 三 章 基 础 知 识 学 习 3.1 熟 悉 JBoss 的 目 录 结 构 安 装 JBoss 会 创 建 下 列 目 录 结 构 : 目 录 描 述 bin 启 动 和 关 闭 JBoss 的 脚 本 client 客 户 端 与 JBoss 通 信 所 需 的 Java 库 (JARs) docs 配 置 的 样 本 文 件 ( 数 据 库 配 置 等 ) docs/dtd 在 JBoss 中 使 用 的 各 种 XML 文 件 的 DTD lib 一 些 JAR,JBoss 启 动 时 加 载, 且 被 所 有 JBoss 配 置 共 享 ( 不 要 把 你 的 库 放 在 这 里 ) server 各 种 JBoss 配 置 每 个 配 置 必 须 放 在 不 同 的 子 目 录 子 目 录 的 名 字 表 示 配 置 的 名 字 JBoss 包 含 3 个 默 认 的 配 置 :minimial,default 和 all, 在 你 安 装 时 可 以 进 行 选 择 server/all JBoss 的 完 全 配 置, 启 动 所 有 服 务, 包 括 集 群 和 IIOP ( 本 教 程 就 采 用 此 配 置 ) server/default JBoss 的 默 认 配 置 在 没 有 在 JBoss 命 令 航 中 指 定 配 置 名 称 时 使 用 ( 本 教 程 没 有 安 装 此 配 置, 如 果 不 指 定 配 置 名 称, 启 动 将 会 出 错 ) server/all/conf JBoss 的 配 置 文 件 server/all/data JBoss 的 数 据 库 文 件 比 如, 嵌 入 的 数 据 库, 或 者 JBossMQ server/all/deploy JBoss 的 热 部 署 目 录 放 到 这 里 的 任 何 文 件 或 目 录 会 被 JBoss 自 动 部 署 EJB WAR EAR, 甚 至 服 务 server/all/lib 一 些 JAR,JBoss 在 启 动 特 定 配 置 时 加 载 他 们 (default 和 minimial 配 置 也 包 含 这 个 和 下
13 面 两 个 目 录 ) server/all/log JBoss 的 日 志 文 件 server/all/tmp JBoss 的 临 时 文 件 3.2 JBoss 中 的 部 署 JBoss 中 的 部 署 过 程 非 常 的 简 单 直 接 在 每 一 个 配 置 中,JBoss 不 断 的 扫 描 一 个 特 殊 目 录 的 变 化 : [jboss 安 装 目 录 ]/server/config-name/deploy 此 目 录 一 般 被 称 为 部 署 目 录 你 可 以 把 下 列 文 件 拷 贝 到 此 目 录 下 : * 任 何 jar 库 ( 其 中 的 类 将 被 自 动 添 加 到 JBoss 的 classpath 中 ) * EJB JAR * WAR (Web Appliction arrchive) * EAR (Enterprise Application archive) * 包 含 JBoss MBean 定 义 的 XML 文 件 * 一 个 包 含 EJB JAR WAR 或 者 EAR 的 解 压 缩 内 容, 并 以.jar.war 或 者.ear 结 尾 的 目 录 要 重 新 部 署 任 何 上 述 文 件 (JAR WAR EAR XML 等 ), 用 新 版 本 的 文 件 覆 盖 以 前 的 就 可 以 了 JBoss 会 根 据 比 较 文 件 的 时 间 发 现 改 变, 然 后 部 署 新 的 文 件 要 重 新 部 署 一 个 目 录, 更 新 他 的 修 改 时 间 即 可 3.3 如 何 进 行 EJB 打 包 要 发 布 EJB 时 必 须 把 她 打 成 jar 或 ear 包, 打 包 的 方 式 有 很 多, 如 :jar 命 令 行 集 成 开 发 环 境 的 打 包 向 导 和 Ant 任 务 下 面 介 绍 Elispse 打 包 向 导 和 Ant 打 包 任 务 1. Elispse 打 包 向 导 在 Elispse 开 发 环 境 下, 可 以 通 过 向 导 进 行 打 包 右 击 项 目 名 称, 在 跳 出 的 菜 单 中 选 择 导 出, 在 导 出 对 话 框 选 择 Jar 文 件, 在 选 择 要 导 出 的 资 源 时, 选 择 源 目 录 和 用 到 的 资 源 然 后 选 择 一 个 存 放 目 录 及 文 件 名 点 完 成 就 结 束 了 打 包 2. Ant 打 包 任 务 采 用 Ant 进 行 打 包 是 比 较 方 便 的, 也 是 作 者 推 荐 的 打 包 方 式 下 面 我 们 看 一 个 简 单 的 打 包 任 务 <?xml version="1.0"?> <project name="jartest" default="jar" basedir="."> <property name="build.dir" value="${basedir/build" /> <property name="build.classes.dir" value="${build.dir/classes" /> <target name="jar" description=" 打 包 成 Jar"> <jar jarfile="${basedir/ejbfile.jar"> <fileset dir="${build.classes.dir"> <include name="**/*.class" /> </fileset> <metainf dir="${basedir/meta-inf "> <include name="**" /> </metainf>
14 </jar> </target> </project> 上 面 建 立 了 一 个 名 为 jartest 的 Ant 项 目, 默 认 的 任 务 为 default="jar", 项 目 的 路 径 为 build.xml 文 件 所 在 目 录 basedir="." 应 用 编 绎 过 后 的 class 文 件 已 经 存 在 于 应 用 的 /build/classes/ 目 录 下 Ant 定 义 了 一 个 属 性 build.classes.dir, 他 指 向 应 用 的 /build/classes/ 目 录 <target name="jar" description=" 打 包 成 Jar"> 定 义 了 一 个 名 叫 jar 的 任 务,description 是 描 述 信 息 任 务 中 使 用 jar 命 令 把 /build/classes/ 目 录 下 的 所 有 class 文 件 打 包 进 jar 文 件, 同 时 也 把 应 用 下 的 META-INF 目 录 下 的 所 有 文 件 打 包 进 jar 文 件 的 META-INF 目 录 打 包 后 的 jar 文 件 存 放 在 应 用 目 录 下 文 件 名 为 :ejbfile.jar 3.4 如 何 进 行 WEB 应 用 打 包 一 个 Web 应 用 发 布 到 Jboss 服 务 器 时 需 要 打 成 war 包 本 节 将 介 绍 jar 命 令 行 及 Ant 任 务 两 种 war 文 件 的 打 包 方 式 1. 在 命 令 行 下 用 jar 命 令 进 行 war 文 件 打 包 在 打 包 前 把 文 件 存 成 以 下 结 构 : WEB 应 用 根 目 录 -- **/*. jsp -- WEB-INF -- web.xml -- lib -- *.* -- classes -- **/*.class 在 Dos 窗 口 中 进 入 到 WEB 应 用 根 目 录 下, 执 行 如 下 命 令 jar cvf EJBTest.war * 此 命 令 把 WEB 应 用 根 目 录 下 的 所 有 文 件 及 文 件 夹 打 包 成 EJBTest.war 文 件 例 如 WEB 应 用 根 目 录 在 : D:\java\webapp\, 命 令 输 入 如 下 : D:\java\webapp> jar cvf EJBTest.war * 2. 在 Ant 任 务 中 进 行 war 文 件 打 包 如 果 文 件 存 放 的 结 构 如 下 面 所 示 : WEB 应 用 根 目 录 -- build.xml --**/*.jsp -- WEB-INF -- web.xml -- lib -- *.* -- classes -- **/*.class 那 么 Ant 的 war 文 件 打 包 任 务 如 下 : <?xml version="1.0"?>
15 <project name="wartest" default="war" basedir="."> <target name="war" description=" 创 建 WEB 发 布 包 "> <war warfile="${basedir/ejbtest.war" webxml="${basedir/web-inf/web.xml"> <fileset dir="${basedir"> <include name="**"/> <exclude name="build.xml" /> <exclude name="/web-inf/web.xml" /> </fileset> </war> </target> </project> <target name="war" description=" 创 建 WEB 发 布 包 "> 定 义 一 个 名 叫 war 的 任 务 任 务 中 执 行 war 打 包 操 作, 把 应 用 下 除 了 build.xml, /WEB-INF/web.xml 之 外 的 所 有 文 件 夹 及 文 件 打 进 war 包, 同 时 把 webxml="${basedir/web-inf/web.xml" 作 为 web 应 用 的 web.xml 文 件 3.5 使 用 了 第 三 方 类 库 的 EJB 如 何 打 包 在 实 际 项 目 中, 我 们 经 常 需 要 使 用 第 三 方 的 类 库 这 些 类 库 应 该 放 在 哪 里?EJB 应 用 一 般 都 有 被 卸 出 ( 这 里 指 装 入 的 反 向 过 程 ) 的 能 力, 这 种 能 力 由 部 署 时 装 入 它 们 的 类 装 载 器 支 持 如 果 我 们 把 第 三 方 类 库 放 入 应 用 服 务 器 的 标 准 类 路 径 ([jboss 安 装 目 录 ]\server\all\lib), 这 些 类 很 可 能 完 全 失 去 被 卸 出 的 能 力 这 样, 如 果 EJB 应 用 要 更 新 某 个 第 三 方 类 库 的 版 本, 重 新 部 署 EJB 应 用 时, 第 三 方 类 库 也 要 重 新 部 署 在 这 种 情 形 下, 把 第 三 方 类 库 放 入 应 用 服 务 器 标 准 类 路 径 很 不 方 便, 因 为 每 次 部 署 EJB 应 用 时, 都 要 重 新 启 动 整 个 应 用 服 务 器, 这 显 然 不 是 理 想 的 选 择 适 合 放 入 应 用 服 务 器 类 路 径 的 第 三 方 类 库 通 常 是 一 些 通 用 类 库, 如 JDBC 驱 动 对 于 针 对 特 定 应 用 的 第 三 方 类 库, 最 理 想 的 选 择 是 把 他 们 放 入 EJB Jar 文 件 中 每 一 个 JAR 文 件 里 都 有 一 个 manifest 文 件, 这 个 文 件 由 jar 工 具 自 动 创 建, 默 认 名 字 是 MANIFEST.MF 我 们 可 以 在 manifest 文 件 中 加 入 一 个 Class-Path 属 性, 引 用 它 所 依 赖 的 JAR 文 件 我 们 可 以 手 工 编 辑 manifest.mf 文 件, 在 原 有 内 容 的 基 础 上, 添 加 Class-Path 属 性 Class-Path 属 性 的 值 是 用 来 搜 索 第 三 方 类 库 的 相 对 URL 这 个 URL 总 是 相 对 于 包 含 Class-Path 属 性 的 组 件 单 个 Class-Path 属 性 内 可 以 指 定 多 个 URL, 一 个 manifest 文 件 可 以 包 含 多 个 Class-Path 属 性 假 设 本 例 EJB 使 用 了 两 个 第 三 方 类 库, 名 为 :Upload.jar,Socket.jar, 修 改 后 的 manifest.mf 文 件 内 容 如 下 : Manifest-Version: 1.0 Ant-Version: Apache Ant Created-By: 1.5.0_01-b08 (Sun Microsystems Inc.) Class-Path: Upload.jar Socket.jar 注 意 :Class-Path: 与 Upload.jar 之 间 有 一 空 格 分 隔 ( 缺 少 了 空 格 就 会 发 生 找 不 到 jar 文 件 ), 多 个 jar 文 件 之 间 需 要 用 空 格 分 隔 Class-Path 所 在 行 还 需 要 进 行 回 车 换 行 下 面 是 打 完 包 后 的 目 录 结 构 : EJB 应 用 根 目 录 -- com ( 注 :ejb 类 包 ) -- Upload.jar ( 注 : 第 三 方 类 库 )
16 -- Socket.jar ( 注 : 第 三 方 类 库 ) -- META-INF -- MANIFEST.MF ( 注 : 加 入 了 Class-Path 属 性 ) 3.6 共 用 了 第 三 方 类 库 的 J2EE 项 目 如 何 打 包 一 个 J2EE 项 目 通 常 由 多 个 EJB 和 Web 应 用 构 成, 如 果 多 个 EJB 及 Web 应 用 共 用 了 一 个 第 三 方 类 库, 我 们 又 如 何 打 包 呢? 按 照 上 节 介 绍 的 内 容, 我 们 会 把 第 三 方 类 库 打 进 每 个 EJB Jar 文 件 及 放 在 Web 应 用 的 /WEB-INF/lib 目 录 下 虽 然 这 种 方 案 也 能 解 决 问 题, 但 它 明 显 地 不 够 完 善 封 装 JAR 文 件 的 目 的 是 为 了 提 高 应 用 的 模 块 化 程 度, 把 同 一 个 类 库 放 入 多 个 JAR 文 件 正 好 是 背 其 道 而 行 之 此 外, 多 次 放 置 同 一 个 类 库 无 谓 地 加 大 了 应 用 的 体 积 最 后, 即 使 只 改 变 一 个 类 库 的 版 权, 每 一 个 EJB JAR 文 件 也 都 要 重 新 构 造, 从 而 使 构 造 过 程 复 杂 化 下 面 的 方 案 很 好 地 解 决 了 上 面 的 问 题 假 设 一 个 J2EE 项 目 含 有 两 个 EJB 及 一 个 Web 应 用, 他 们 的 文 件 名 分 别 为 :HelloWorld.jar,HelloChina.jar, MyEJBTest.war 这 三 个 模 块 都 使 用 了 一 个 第 三 方 类 库, 名 为 :Tools.jar 现 在 我 们 要 做 的 是 编 辑 这 三 个 模 块 的 manifest.mf 文 件, 在 原 有 内 容 的 基 础 上, 添 加 Class-Path 属 性 三 个 模 块 的 jar 文 件 修 改 后 的 manifest.mf 文 件 内 容 如 下 : Manifest-Version: 1.0 Ant-Version: Apache Ant Created-By: 1.5.0_01-b08 (Sun Microsystems Inc.) Class-Path: Tools.jar 注 意 :Class-Path: 与 Tools.jar 之 间 有 一 空 格 分 隔 ( 缺 少 了 空 格 就 会 发 生 找 不 到 jar 文 件 ),Class-Path 所 在 行 还 需 要 进 行 回 车 换 行 各 个 模 块 通 过 manifest.mf 文 件 都 能 找 到 其 所 依 赖 的 Tools.jar 文 件 下 面 是 打 完 包 后 的 目 录 结 构 : J2EE 应 用 根 目 录 -- HelloWorld.jar -- META-INF -- MANIFEST.MF ( 注 : 加 入 了 Class-Path 属 性, 引 用 它 所 依 赖 的 Tools.jar) -- HelloChina.jar -- META-INF -- MANIFEST.MF ( 注 : 加 入 了 Class-Path 属 性, 引 用 它 所 依 赖 的 Tools.jar) -- MyEJBTest.war -- META-INF -- MANIFEST.MF ( 注 : 加 入 了 Class-Path 属 性, 引 用 它 所 依 赖 的 Tools.jar) -- Tools.jar ( 注 : 第 三 方 类 库 ) -- META-INF -- application.xml -- MANIFEST.MF ( 注 : 由 工 具 自 动 生 成, 没 有 加 入 Class-Path 属 性 ) 把 第 三 方 类 库 和 EJB 模 块 并 排 打 进 jar 包, 如 果 第 三 方 类 库 很 多 的 情 况 下, 显 的 有 些 零 乱 而 不 雅 观 在 此 作 者 建 议 大 家 建 个 文 件 夹 专 门 用 来 存 放 第 三 方 类 库 如 建 个 lib 文 件 夹, 把 第 三 方 类 库 放 在 此 文 件 夹 下 然 后 修 改 J2EE
17 各 模 块 的 manifest.mf 文 件 内 容, 修 改 后 的 内 容 如 下 : Manifest-Version: 1.0 Ant-Version: Apache Ant Created-By: 1.5.0_01-b08 (Sun Microsystems Inc.) Class-Path: lib/tools.jar J2EE 应 用 的 文 件 后 缀 为 ear, 应 用 使 用 到 的 各 模 块 在 application.xml 文 件 中 定 义, 本 例 的 application.xml 内 容 如 下 : <?xml version="1.0" encoding="utf-8"?> <application xmlns=" version="1.4" xmlns:xsi=" xsi:schemalocation=" /xml/ns/j2ee <display-name>ejb3trail</display-name> <description>j2ee Made Easy Trail Map</description> <module> <ejb>helloworld.jar</ejb> </module> <module> <ejb> HelloChina.jar</ejb> </module> <module> <web> <web-uri>myejbtest.war</web-uri> <context-root>myejbtest</context-root> </web> </module> </application> 因 为 EJB 打 进 了 EAR 文 件, 在 访 问 EJB 时,JNDI 名 应 为 以 下 格 式 : 访 问 本 地 接 口 :EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local 访 问 远 程 接 口 :EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote 例 : 如 果 上 面 J2EE 应 用 打 成 MyJ2EE.ear 文 件, 访 问 HelloWorld EJB 远 程 接 口 的 JNDI 名 是 : MyJ2EE/HelloWorldBean/remote 3.7 如 何 恢 复 本 书 配 套 例 子 的 开 发 环 境 登 陆 下 载 本 书 配 套 例 子, 解 压 缩 后 可 以 看 到 以 下 文 件 夹 ( 本 例 解 压 缩 到 :E:\book):
18 每 个 文 件 夹 都 是 一 个 项 目,lib 文 件 夹 存 放 所 有 项 目 使 用 到 的 jar 文 件 下 面 我 们 以 恢 复 HelloWorld 项 目 为 例, 介 绍 开 发 环 境 的 恢 复 Eclipse 必 须 是 eclipse3.1.x 以 上 版 本, 使 用 JDK5.0 以 上 版 本 在 Eclipse 开 发 工 具 上 点 击 文 件 -> 新 建 -> 项 目, 选 择 Java 项 目, 点 击 下 一 步, 出 现 如 下 界 面 :
19 在 上 图 中 选 择 从 现 有 资 源 创 建 项 目 (X), 点 击 浏 览 (R), 在 出 现 的 文 件 窗 口 中 选 择 E:\book\HelloWorld 文 件 夹, 如 下 图 : 用 文 件 夹 名 HelloWorld 作 为 项 目 的 名 称, 如 下 图 :
20 在 上 图 中 点 击 下 一 步,Eclipse 将 会 检 测 已 存 在 项 目 的 配 置 信 息, 检 测 完 后 出 现 下 图 :
21 上 图 中 java 设 置 出 现 感 叹 号, 并 提 示 缺 少 N 个 构 建 路 径 条 目, 实 际 上 是 N 个 Jar 文 件 路 径 不 正 确 现 在 我 们 需 要 把 Jar 文 件 的 路 径 调 整 正 确 在 上 图 中 点 击 库 (L), 在 出 现 的 界 面 中 把 全 部 jar 文 件 及 JRE 系 统 库 删 除, 通 过 添 加 库 按 钮 选 择 添 加 JRE 系 统 库, 添 加 完 JRE 系 统 库 后 点 击 添 加 外 部 JAR(X) 按 钮, 在 出 现 的 文 件 窗 口 中 把 E:\book\lib 文 件 夹 下 所 有 的 Jar 文 件 选 上 (Ctrl+A), 回 到 了 如 下 界 面 :
22 点 击 完 成 就 结 束 了 开 发 环 境 的 建 立 本 书 其 他 项 目 的 开 发 环 境 恢 复 步 骤 如 上 3.8 如 何 对 EJB3 进 行 调 试 要 对 EJB3 进 行 调 试, 我 们 需 要 用 到 一 个 工 具 :JBossIDE, 这 个 工 具 就 是 第 二 章 要 你 下 载 安 装 的 开 发 工 具, 如 果 你 没 有 安 装, 请 参 照 第 二 章 的 内 容 进 行 安 装 在 对 EJB3 进 行 调 试 前 我 们 首 先 需 要 在 Eclipse 中 配 置 JBoss server 的 调 试 环 境 调 试 环 境 建 立 后, 所 有 的 项 目 都 可 以 共 用, 配 置 步 骤 如 下 : 1> 首 先 需 要 在 Eclipse 开 发 界 面 中 显 示 出 Jboss Server View 视 图, 你 可 以 在 Eclipse 菜 单 栏 点 击 窗 口 (W) - 显 示 视 图 (V) - 其 他 (O), 在 出 现 的 显 示 视 图 窗 口 中 选 择 Server 文 件 夹 下 的 Jboss Server View, 如 下 图 :
23 点 击 确 定 后, Jboss Server View 视 图 将 出 现 在 Eclipse 开 发 界 面 的 控 制 区 ( 如 果 你 的 开 发 界 面 已 经 很 零 乱, 可 以 通 过 窗 口 (W) - 复 位 透 视 图 复 位 Eclipse 原 始 界 面 ), 如 下 图 : 2> 接 着 我 们 需 要 建 立 一 个 Jboss Server 在 Jboss Server View 视 图 上 边 白 色 区 域 点 击 鼠 标 右 键, 在 出 现 的 属 性 菜 单 中 点 击 New - Server 如 下 图 : 点 击 Server 后 跳 出 如 下 窗 口, 在 这 个 窗 口 中 我 们 选 择 Jboss AS 4.0, 其 他 参 数 采 用 系 统 默 认 值
24 点 击 下 一 步 后 跳 出 如 下 窗 口, 在 这 个 窗 口 中 我 们 选 择 Jboss 服 务 器 所 在 目 录 ( 作 者 的 Jboss 安 装 在 C:\JavaServer\jboss) 目 前 Jboss IDE 有 个 小 bug, 他 默 认 到 default 配 置 下 找 javax.servlet.jar 文 件, 如 果 你 采 用 本 书 的 all 配 置 项, 那 么 就 会 发 生 找 不 到 文 件, 解 决 此 问 题 的 方 法 很 简 单, 就 是 在 [jboss 安 装 目 录 ]server\ 目 录 下 建 立 default\lib, 然 后 把 javax.servlet.jar 拷 贝 到 此 文 件 夹 下, 这 个 文 件 你 可 以 在 [jboss 安 装 目 录 ]server\all\lib 文 件 夹 下 得 到 点 击 下 一 步, 在 出 现 的 对 话 框 中 选 择 all 配 置, 其 他 采 用 默 认 值 ( 前 提 在 安 装 jboss 时 没 有 修 改 过 对 应 参 数 )
25 点 击 完 成, Jboss Server View 视 图 如 下 图 所 示 : 此 时 的 服 务 器 处 于 Stopped 状 态, 你 需 要 调 试 EJB3 时 可 以 以 Debug 方 式 启 动 Jboss, 方 法 是 : 在 服 务 器 JBOSS4.02 上 右 击 鼠 标, 在 跳 出 的 属 性 菜 单 中 点 击 Debug, 或 者 点 击 Jboss Server View 视 图 右 边 的 小 昆 虫 图 标 控 制 台 会 输 出 Jboss 的 启 动 信 息, 如 果 启 动 出 错, 先 看 看 在 DOS 窗 口 下 以 命 令 行 方 式 (run c all) 能 否 启 动 Jboss, 如 果 DOS 窗 口 下 能 正 常 启 动 Jboss, 那 估 计 是 你 在 建 立 Jboss Server 的 配 置 中 出 错, 除 了 检 查 Jboss 安 装 目 录 的 选 择 是 否 正 确 之 外, 还 要 重 点 检 查 Jboss 配 置 项 选 择 是 否 正 确 经 过 上 面 的 步 骤,JBoss server 的 调 试 环 境 已 经 搭 建 好, 下 面 我 们 就 以 HelloWorld 项 目 为 例 介 绍 EJB3 的 调 试 我 们 按 照 上 面 章 节 的 步 骤 恢 复 HelloWorld 项 目 的 开 发 环 境 因 为 SayHello(String name) 方 法 内 部 代 码 不 多, 为 了 有 代 码 可 调 试, 我 们 在 方 法 内 部 随 便 添 加 几 行 代 码, 并 把 断 点 设 在 代 码 的 第 一 行, 如 下 图 :
26 接 着 我 们 点 击 Jboss Server View 视 图 右 边 的 小 昆 虫 图 标, 以 Debug 方 式 启 动 名 为 JBOSS4.02 的 Jboss Server 在 控 制 台 观 察 启 动 是 否 完 成, 如 果 启 动 完 成, 我 们 就 打 开 HelloWorld 项 目 下 的 build.xml 文 件, 在 大 纲 视 图 中 以 调 试 方 式 执 行 Ant 的 deploy 任 务, 如 下 图 :
27 执 行 Ant 构 建 后, 在 控 制 台 将 会 输 出 Ant 的 任 务 信 息 及 HelloWorld 在 Jboss 中 的 发 布 信 息, 当 HelloWorld 发 布 完 成 后, 我 们 在 浏 览 器 上 输 入 注 意 : 确 保 已 经 发 布 了 Web 应 用 EJBTest.war),Eclipse 将 会 提 示 是 否 切 换 到 调 试 透 视 图 中, 如 下 图, 这 里 点 是. 如 果 你 不 想 老 出 现 这 个 对 话 框, 可 以 勾 选 上 记 住 我 的 决 定. 接 着 将 出 现 如 下 窗 口, 提 示 找 不 class 对 应 的 java 源 文 件
28 此 时 你 可 以 在 上 图 点 击 编 辑 源 查 找 路 径 (E), 出 现 编 辑 源 查 找 路 径 窗 口, 如 下 图 : 在 上 图 中 点 击 添 加 (A), 出 现 添 加 源 代 码 窗 口, 如 下 图 :
29 在 上 图 我 们 选 择 从 java 项 目 寻 找 对 应 的 源 代 码, 如 果 你 的 源 代 码 不 在 eclipse 的 项 目 中, 你 可 以 通 过 文 件 系 统 目 录 进 行 寻 找, 把 路 径 指 向 源 代 码 所 在 的 src 目 录 选 择 java 项 目, 点 击 确 定 后 出 现 下 面 对 话 框 : 在 上 图 中 我 们 勾 选 HelloWorld 项 目, 点 击 确 定 此 时 将 回 到 调 试 窗 口 界 面, 如 下 图 :
30 上 图 中 可 以 看 到 调 试 指 针 已 经 落 在 了 断 点 所 在 行, 此 后 的 调 试 方 法 就 和 普 通 的 java 应 用 程 序 一 样, 你 可 以 使 用 单 步 跳 入, 单 步 跳 过, 单 步 返 回, 运 行 至 行 等 调 试 方 式, 这 里 就 不 作 详 细 解 说 了, 想 了 解 的 朋 友 可 以 参 考 Eclipse 关 于 调 试 方 面 的 资 料 在 这 里 需 要 说 明 下, 调 试 指 针 ( 即 绿 色 光 亮 行 ) 的 移 动 有 时 候 比 较 慢, 点 击 单 步 跳 入 等 调 试 按 钮 十 多 秒 后, 调 试 指 针 的 移 动 才 有 反 应 为 了 方 便 调 试 EJB3, 建 议 使 用 Ant 执 行 编 绎 打 包 发 布 等 操 作 调 试 ejb3 时 不 需 要 反 复 重 启 Jboss Server
31 第 四 章 会 话 Bean(Session Bean) 4.1 Stateless Session Beans( 无 状 态 bean) 开 发 开 发 只 存 在 Remote 接 口 的 无 状 态 Session Bean 步 骤 如 下 : 第 一 步 : 要 定 义 一 个 会 话 Bean, 首 先 需 要 定 义 一 个 包 含 他 所 有 业 务 方 法 的 接 口 这 个 接 口 不 需 要 任 何 注 释, 就 像 普 通 的 java 接 口 那 样 定 义 调 用 EJB 的 客 户 端 通 过 使 用 这 个 接 口 引 用 从 EJB 容 器 得 到 的 会 话 Bean 对 象 stub 接 口 的 定 义 如 下 : HelloWorld.java //author:lihuoming package com.foshanshop.ejb3; public interface HelloWorld { public String SayHello(String name); 第 二 步 : 实 现 上 面 的 接 口 并 加 入 两 个 第 一 个 注 释 定 义 这 是 一 个 无 状 态 会 话 Bean, 第 二 个 注 释 指 明 这 个 无 状 态 Bean 的 remote 接 口 在 使 用 这 两 个 注 释 时 需 要 使 用 一 些 EJB 的 类 包, 这 些 类 包 都 可 以 在 jboss 安 装 目 录 的 client,/server/all/deploy/jboss-aop-jdk50.deployer,/server/all/deploy/ejb3.deployer, /lib/endorsed 等 文 件 夹 下 找 到, 或 者 在 源 代 码 的 Lib 文 件 夹 下 获 得 ( 下 载 地 址 : 经 过 上 面 的 步 骤 一 个 只 存 在 Remote 接 口 的 无 状 态 会 话 Bean 就 开 发 完 成 无 状 态 会 话 Bean 是 一 个 简 单 的 POJO( 纯 粹 的 面 向 对 象 思 想 的 java 对 象 ),EJB3.0 容 器 自 动 地 实 例 化 及 管 理 这 个 Bean 下 面 是 HelloWorld 会 话 Bean 的 实 现 代 码 : HelloWorldBean.java 实 现 类 的 命 名 规 则 是 : 接 口 +Bean, 如 : HelloWorldBean //author:lihuoming package com.foshanshop.ejb3.impl; import com.foshanshop.ejb3.helloworld; import javax.ejb.remote; ({HelloWorld.class) public class HelloWorldBean implements HelloWorld { public String SayHello(String name) { return name +" 说 : 你 好! 世 界, 这 是 我 的 第 一 个 EJB3 哦."; HelloWorld 会 话 Bean 开 发 完 了, 现 在 我 们 把 她 发 布 到 Jboss 中 在 发 布 前 需 要 把 她 打 成 Jar 包 或 EAR 包 ( 如 何 打 包 请 考 照 第 三 章 : 如 何 进 行 EJB 打 包 )
32 打 完 包 后, 启 动 Jboss, 把 发 布 包 拷 贝 到 [jboss 安 装 目 录 ]\server\all\deploy\ 目 录 下 观 察 Jboss 控 制 台 输 出, 如 果 没 有 抛 出 例 外 并 看 到 下 面 的 输 出 界 面, 发 布 就 算 成 功 了 一 旦 发 布 成 功, 你 就 可 以 在 jboss 的 管 理 平 台 查 看 她 们 的 JNDI 名, 输 入 下 面 URL 点 击 service=jndiview, 查 看 EJB 的 JNDI 名 称 ( 如 下 图 ) 在 出 现 的 页 面 中, 找 到 List of MBean operations: 栏 点 击 Invoke 按 钮, 出 现 如 下 界 面 : 在 上 图 中 可 以 看 见 HelloWorld 会 话 Bean 的 JNDI 名,JNDI 名 的 组 成 规 则 是 上 层 名 称 / 下 层 名 称, 每 层 之 间 以 / 分 隔 HelloWorld 会 话 Bean 的 JNDI 名 是 :HelloWorldBean/remote HelloWorld 会 话 Bean 发 布 成 功 后, 接 下 来 介 绍 客 户 端 如 何 访 问 她 当 一 个 无 状 态 会 话 Bean 发 布 到 EJB 容 器 时, 容 器 就 会 为 她 创 建 一 个 对 象 stub, 并 把 她 注 册 进 容 器 的 JNDI 目 录, 客 户 端 代 码 使 用 她 的 JNDI 名 从 容 器 获 得 他 的 stub 通 过 这 个 stub, 客 户 端 可 以 调 用 她 的 业 务 方 法 例 子 代 码 如 下 : Test.jsp <%@ page contenttype="text/html; charset=gbk"%> <%@ page import="com.foshanshop.ejb3.helloworld, javax.naming.*, java.util.properties"%> <% Properties props = new Properties();
33 props.setproperty("java.naming.factory.initial", "org.jnp.interfaces.namingcontextfactory"); props.setproperty("java.naming.provider.url", "localhost:1099"); props.setproperty("java.naming.factory.url.pkgs", "org.jboss.naming"); InitialContext ctx; try { ctx = new InitialContext(props); HelloWorld helloworld = (HelloWorld) ctx.lookup("helloworldbean/remote"); out.println(helloworld.sayhello(" 佛 山 人 ")); catch (NamingException e) { out.println(e.getmessage()); %> ctx = new InitialContext(props); 是 设 置 JNDI 访 问 的 环 境, 本 例 使 用 JBoss, 所 以 把 环 境 设 为 JBoss 的 上 下 文 环 境 在 这 里 作 者 要 重 点 说 明 一 下 EJB JNDI 名 称 默 认 的 命 名 规 则, 命 名 规 则 如 下 : 1> 如 果 EJB 打 包 进 后 缀 为 *.ear 的 J2EE 发 布 文 件, 默 认 的 JNDI 名 称 是 访 问 本 地 接 口 :EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local 访 问 远 程 接 口 :EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote 例 :EJB HelloWorld 打 包 进 名 为 HelloWorld.ear 的 J2EE 应 用, 访 问 她 远 程 接 口 的 JNDI 名 是 : HelloWorld/HelloWorldBean/remote 2> 如 果 EJB 应 用 打 包 成 后 缀 为 *.jar 的 发 布 文 件, 默 认 的 JNDI 名 称 是 访 问 本 地 接 口 :EJB-CLASS-NAME/local 访 问 远 程 接 口 :EJB-CLASS-NAME/remote 例 : HelloWorld 应 用 打 包 成 HelloWorld.jar 文 件, 访 问 她 远 程 接 口 的 JNDI 名 称 是 :HelloWorldBean/remote 另 外 有 一 点 要 注 意 :EJB-CLASS-NAME 是 不 带 包 名 的, 如 com.foshanshop.ejb3.impl.helloworldbean 只 需 取 HelloWorldBean 目 前 网 上 很 多 教 材 获 取 JNDI 名 的 方 式 都 过 时 了, 如 : HelloWorld helloworld = (HelloWorld) ctx.lookup(helloworld.class.getname()); 我 们 把 上 面 的 客 户 端 应 用 打 成 war 文 件 然 后 把 她 拷 贝 到 [jboss 安 装 目 录 ]\server\all\deploy 目 录 下 如 果 war 文 件 的 文 件 名 为 EJBTest.war, 我 们 可 以 通 过 访 问 客 户 端 本 例 子 的 EJB 源 代 码 在 HelloWorld 文 件 夹 ( 源 代 码 下 载 : 项 目 使 用 到 的 类 库 在 上 级 目 录 lib 文 件 夹 下 要 恢 复 HelloWorld 项 目 的 开 发 环 境 请 参 考 第 三 章 如 何 恢 复 本 书 配 套 例 子 的 开 发 环 境, 要 发 布 本 例 子 ( 确 保 配 置 了 环 境 变 量 JBOSS_HOME 及 启 动 了 Jboss), 你 可 以 执 行 Ant 的 deploy 任 务 本 例 子 的 客 户 端 代 码 在 EJBTest 文 件 夹, 要 发 布 客 户 端 应 用, 你 可 以 执 行 Ant 的 deploy 任 务 通 过 访 问 客 户 端
34 4.1.2 开 发 只 存 在 Local 接 口 的 无 状 态 Session Bean 开 发 只 存 在 Local 接 口 的 无 状 态 会 话 Bean 的 步 骤 和 上 节 开 发 只 存 在 Remote 接 口 的 无 状 态 会 话 Bean 的 步 骤 相 同, 两 者 唯 一 不 同 之 处 是, 前 者 使 注 释 指 明 实 现 的 接 口 是 远 程 接 口, 后 者 使 注 释 指 明 实 现 的 接 口 是 本 地 接 口 注 释 都 不 存 在 时, 会 话 Bean 实 现 的 接 口 默 认 为 Local 接 口 如 果 在 本 机 调 用 EJB( 确 保 客 户 端 与 EJB 容 器 运 行 在 同 一 个 JVM), 采 用 Local 接 口 访 问 EJB 优 于 Remote 接 口, 因 为 Remote 接 口 访 问 EJB 需 要 经 过 远 程 方 法 调 用 (RPCs) 环 节, 而 Local 接 口 访 问 EJB 直 接 从 JVM 中 返 回 EJB 的 引 用 下 面 是 只 存 在 Local 接 口 的 无 状 态 会 话 Bean 代 码 LocalHelloWorld.java //author:lihuoming package com.foshanshop.ejb3; public interface LocalHelloWorld { public String SayHello(String name); LocalHelloWorldBean.java //author:lihuoming package com.foshanshop.ejb3.impl; import javax.ejb.local; import javax.ejb.stateless; ({LocalHelloWorld.class) public class LocalHelloWorldBean implements LocalHelloWorld { public String SayHello(String name) { return name +" 说 : 你 好! 世 界, 这 是 一 个 只 具 有 Local 接 口 的 无 状 态 Bean"; 客 户 端 调 用 代 码 : LocalSessionBeanTest.jsp <%@ page contenttype="text/html; charset=gbk"%> <%@ page import="com.foshanshop.ejb3.localhelloworld, javax.naming.*, java.util.properties"%> <% Properties props = new Properties(); props.setproperty("java.naming.factory.initial", "org.jnp.interfaces.namingcontextfactory"); props.setproperty("java.naming.provider.url", "localhost:1099"); props.setproperty("java.naming.factory.url.pkgs", "org.jboss.naming"); InitialContext ctx; try { ctx = new InitialContext(props); LocalHelloWorld helloworld = (LocalHelloWorld)
35 ctx.lookup("localhelloworldbean/local"); out.println(helloworld.sayhello(" 佛 山 人 ")); catch (NamingException e) { out.println(e.getmessage()); %> 上 面 的 客 户 端 代 码 打 包 成 war 文 件 发 布 到 jboss 中 如 果 你 试 图 在 独 立 的 Tomcat 服 务 器 中 执 行 客 户 端 代 码 ( 如 何 在 独 立 的 Tomcat 环 境 中 调 用 EJB 请 考 照 第 二 章 : 在 独 立 的 Tomcat 中 调 用 EJB), 你 将 获 得 如 下 例 外 : java.lang.nullpointerexception org.jboss.ejb3.stateless.statelesslocalproxy.invoke(statelesslocalproxy.java:74) 产 生 此 例 外 的 原 因 是, 调 用 Local 接 口 的 客 户 端 与 EJB 容 器 不 在 同 一 个 VM( 虚 拟 内 存 堆 ) 相 对 于 发 布 到 jboss deploy 目 录 下 的 客 户 端 应 用 而 言, 他 与 EJB 容 器 运 行 在 同 一 个 VM 如 果 客 户 端 与 EJB 容 器 在 不 同 的 VM, 只 能 通 过 其 Remote 接 口 进 行 访 问 本 例 子 的 EJB 源 代 码 在 LocalSessionBean 文 件 夹 ( 源 代 码 下 载 : 项 目 中 使 用 到 的 类 库 在 上 级 目 录 lib 文 件 夹 下 要 恢 复 LocalSessionBean 项 目 的 开 发 环 境 请 参 考 第 三 章 如 何 恢 复 本 书 配 套 例 子 的 开 发 环 境, 要 发 布 本 例 子 EJB ( 确 保 配 置 了 环 境 变 量 JBOSS_HOME 及 启 动 了 Jboss), 你 可 以 执 行 Ant 的 deploy 任 务 本 例 子 的 客 户 端 代 码 在 EJBTest 文 件 夹, 要 发 布 客 户 端 应 用, 你 可 以 执 行 Ant 的 deploy 任 务 通 过 访 问 客 户 端 开 发 存 在 Remote 与 Local 接 口 的 无 状 态 Session Bean 在 实 际 应 用 中, 一 个 无 状 态 Session Bean 都 应 该 实 现 Remote 与 Local 接 口 当 会 话 Bean 的 某 些 方 法 只 供 EJB 容 器 内 部 调 用 而 不 对 外 暴 露 时, 可 以 把 他 定 义 在 Local 接 口 本 节 介 绍 如 何 开 发 一 个 具 有 Remote 与 Local 接 口 的 无 状 态 Session Bean 开 发 前 先 介 绍 一 下 两 个 接 口 具 有 的 方 法, 两 者 都 含 有 方 法 Add(int a, int b), 而 Local 接 口 含 有 一 个 自 己 的 方 法 :getresult() 下 面 是 例 子 的 源 代 码 定 义 远 程 接 口 :Operation.java //author:lihuoming package com.foshanshop.ejb3; public interface Operation { public int Add(int a, int b); 定 义 本 地 接 口 :LocalOperation.java, 本 地 接 口 具 有 远 程 接 口 的 所 有 方 法, 另 外 有 自 己 的 方 法 getresult() //author:lihuoming package com.foshanshop.ejb3; public interface LocalOperation extends Operation { public int getresult(); 实 现 本 地 接 口 与 远 程 接 口 的 会 话 Bean:OperationBean.java
36 //author:lihuoming package com.foshanshop.ejb3.impl; import javax.ejb.local; import javax.ejb.remote; import javax.ejb.stateless; import com.foshanshop.ejb3.localoperation; ({LocalOperation.class) public class OperationBean implements Operation, LocalOperation { private int total = 0; private int addresult = 0; public int Add(int a, int b) { addresult = a + b; return addresult; public int getresult() { total += addresult; return total; JSP 客 户 端 :OperationBeanTest.jsp <%@ page contenttype="text/html; charset=gbk"%> <%@ page import="com.foshanshop.ejb3.operation, com.foshanshop.ejb3.localoperation, javax.naming.*, java.util.properties"%> <% Properties props = new Properties(); props.setproperty("java.naming.factory.initial", "org.jnp.interfaces.namingcontextfactory"); props.setproperty("java.naming.provider.url", "localhost:1099"); props.setproperty("java.naming.factory.url.pkgs", "org.jboss.naming"); InitialContext ctx = new InitialContext(props); try { Operation operation = (Operation) ctx.lookup("operationbean/remote"); out.println(" 通 过 远 程 接 口 调 用 EJB 成 功 "); out.println("<br>( 通 过 远 程 接 口 调 用 EJB) 相 加 的 结 果 是 :"+ operation.add(1,1)); catch (Exception e) { out.println("<br> 远 程 接 口 调 用 失 败 "); out.println("<br>==============================================");
37 try { // 通 过 本 地 接 口 调 用 EJB LocalOperation A = (LocalOperation) ctx.lookup("operationbean/local"); out.println("<br>( 通 过 本 地 接 口 调 用 EJB) 调 用 A.Add() 的 结 果 是 :"+ A.Add(1,1)); out.println("<br> 调 用 A.getResult() 的 结 果 是 :"+ A.getResult()); LocalOperation B = (LocalOperation) ctx.lookup("operationbean/local"); out.println("<br>( 通 过 本 地 接 口 调 用 EJB) 调 用 B.Add() 的 结 果 是 :"+ B.Add(1,1)); out.println("<br> 调 用 B.getResult() 的 结 果 是 :<font color=red>"+ B.getResult() + "</font>"); catch (Exception e) { out.println("<br> 本 地 接 口 调 用 失 败 "); %> 把 会 话 Bean 及 客 户 端 Web 应 用 发 布 到 jboss, 客 户 端 的 调 用 结 果 如 下 : 通 过 远 程 接 口 调 用 EJB 成 功 ( 通 过 远 程 接 口 调 用 EJB) 相 加 的 结 果 是 :2 ============================================== ( 通 过 本 地 接 口 调 用 EJB) 调 用 A.Add() 的 结 果 是 :2 调 用 A.getResult() 的 结 果 是 :2 ( 通 过 本 地 接 口 调 用 EJB) 调 用 B.Add() 的 结 果 是 :2 调 用 B.getResult() 的 结 果 是 :4 细 心 的 你 可 能 会 发 现 调 用 Local 接 口 时, 两 次 累 加 的 结 果 都 不 一 样, 一 个 是 2, 一 个 是 4 调 用 本 地 接 口 的 客 户 端 代 码 片 段 如 下 : // 通 过 本 地 接 口 调 用 EJB LocalOperation A = (LocalOperation) ctx.lookup("operationbean/local"); out.println("<br>( 通 过 本 地 接 口 调 用 EJB) 调 用 A.Add() 的 结 果 是 :"+ A.Add(1,1)); out.println("<br> 调 用 A.getResult() 的 结 果 是 :"+ A.getResult()); LocalOperation B = (LocalOperation) ctx.lookup("operationbean/local"); out.println("<br>( 通 过 本 地 接 口 调 用 EJB) 调 用 B.Add() 的 结 果 是 :"+ B.Add(1,1)); out.println("<br> 调 用 B.getResult() 的 结 果 是 :<font color=red>"+ B.getResult() + "</font>"); 你 可 能 认 为 A 和 B 得 到 的 应 该 是 两 个 不 同 的 对 象, 根 据 OperationBean.java 的 代 码 判 断, 他 们 的 结 果 都 是 2 才 对 为 何 一 个 为 2, 另 一 个 为 4 呢 这 是 因 为 Stateless Session Bean 不 负 责 记 录 使 用 者 状 态,Stateless Session Bean 一 旦 实 例 化 就 被 加 进 会 话 池 中, 各 个 用 户 都 可 以 共 用 即 使 用 户 已 经 消 亡,Stateless Session Bean 的 生 命 期 也 不 一 定 结 束, 它 可 能 依 然 存 在 于 会 话 池 中, 供 其 他 用 户 调 用 如 果 它 有 自 己 的 属 性 ( 变 量 ), 那 么 这 些 变 量 就 会 受 到 所 有 调 用 它 的 用 户 的 影 响 本 例 子 的 EJB 源 代 码 在 LocalRemoteBean 文 件 夹 ( 源 代 码 下 载 : 项 目 中 使 用 到 的 类 库 在 上 级 目 录 lib 文 件 夹 下 要 恢 复 LocalRemoteBean 项 目 的 开 发 环 境 请 参 考 第 三 章 如 何 恢 复 本 书 配 套 例 子 的 开 发 环 境, 要 发 布 本 例 子 EJB ( 确 保 配 置 了 环 境 变 量 JBOSS_HOME 及 启 动 了 Jboss), 你 可 以 执 行 Ant 的 deploy 任 务 本 例 子 的 客 户 端 代 码 在 EJBTest 文 件 夹, 要 发 布 客 户 端 应 用, 你 可 以 执 行 Ant 的 deploy 任 务 通 过 访 问 客 户 端
38 在 Jboss 网 站 看 到, 在 EJB3.0 RC9(Jboss 4.0.5GA 内 含 ) 版 本 中 Remote 及 Local 接 口 可 以 指 向 同 一 个 业 务 接 口, 这 样 客 户 端 就 不 会 因 调 用 接 口 的 不 同 而 来 回 切 换 业 务 接 口 类 当 然 这 种 使 用 场 合 是 在 Remote 和 Local 的 接 口 方 法 相 同 的 情 况 下 如 : session bena 片 @Local({Same.class) public class SameBean implements Same { public String say(string who){ return who + " 说 : 我 就 爱 使 用 同 一 个 业 务 接 口 "; JSP 客 户 端 <%@ page contenttype="text/html; charset=gbk"%> <%@ page import="com.foshanshop.ejb3.same, javax.naming.*, java.util.properties"%> <% Properties props = new Properties(); props.setproperty("java.naming.factory.initial", "org.jnp.interfaces.namingcontextfactory"); props.setproperty("java.naming.provider.url", "localhost:1099"); props.setproperty("java.naming.factory.url.pkgs", "org.jboss.naming"); InitialContext ctx; try { ctx = new InitialContext(props); Same same = (Same) ctx.lookup("samebean/remote"); out.println(same.say(" 佛 山 人 ")); out.println("<br> <br>"); Same same2 = (Same) ctx.lookup("samebean/local"); out.println(same2.say(" 黎 明 ")); catch (NamingException e) { out.println(e.getmessage()); %> 上 面 的 Jsp 客 户 端 是 运 行 在 Jboss 中 的, 如 果 你 想 运 行 在 独 立 的 tomcat 中, 你 只 能 调 用 其 remote 接 口 需 要 独 立 运 行 在 tomcat 中, 你 可 以 参 考 第 二 章 在 独 立 的 Tomcat 中 调 用 EJB 4.2 Stateful Session Beans( 有 状 态 bean) 开 发 有 状 态 Bean 是 一 个 可 以 维 持 自 身 状 态 的 会 话 Bean 每 个 用 户 都 有 自 己 的 一 个 实 例, 在 用 户 的 生 存 期 内,Stateful Session Bean 保 持 了 用 户 的 信 息, 即 有 状 态 ; 一 旦 用 户 灭 亡 ( 调 用 结 束 或 实 例 结 束 ),Stateful Session Bean 的 生 命 期 也 告 结 束 即 每 个 用 户 最 初 都 会 得 到 一 个 初 始 的 Stateful Session Bean
39 Stateful Session Bean 的 开 发 步 骤 与 Stateless Session Bean 的 开 发 步 骤 相 同 先 定 义 业 务 接 口, 例 子 代 码 如 下 : MyAccount.java //author:lihuoming package com.foshanshop.ejb3; import java.io.serializable; public interface MyAccount extends Serializable { public int Add(int a, int b); public int getresult() ; 大 家 注 意 stateful session bean 必 须 实 现 Serializable 接 口, 这 样 EJB 容 器 才 能 在 她 们 不 再 使 用 时 序 列 化 存 储 她 们 的 状 态 信 息. MyAccountBean.java //author:lihuoming package com.foshanshop.ejb3.impl; import javax.ejb.remote; import javax.ejb.stateful; @Remote(MyAccount.class) public class MyAccountBean implements MyAccount{ private int total = 0; private int addresult = 0; public int Add(int a, int b) { addresult = a + b; return addresult; public int getresult() { total += addresult; return total; 上 面 MyAccountBean 直 接 实 现 MyAccount 接 口, 通 注 释 定 义 这 是 一 个 有 状 态 会 话 Bean,@Remote 注 释 指 明 有 状 态 Bean 的 remote 接 注 释 屏 蔽 缺 少 serialversionuid 定 义 的 警 告 下 面 是 MyAccountBean 的 JSP 客 户 端 代 码 : StatefulBeanTest.jsp <%@ page contenttype="text/html; charset=gbk"%> <%@ page import="com.foshanshop.ejb3.myaccount,javax.naming.*, java.util.properties"%> <% Properties props = new Properties(); props.setproperty("java.naming.factory.initial", "org.jnp.interfaces.namingcontextfactory");
40 props.setproperty("java.naming.provider.url", "localhost:1099"); props.setproperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); InitialContext ctx = new InitialContext(props); try { MyAccount A = (MyAccount) ctx.lookup("myaccountbean/remote"); out.println(" 调 用 A.Add() 的 结 果 是 :"+ A.Add(1,1)); out.println("<br> 调 用 A.getResult() 的 结 果 :"+ A.getResult()); out.println("<br>========================================"); MyAccount B = (MyAccount) ctx.lookup("myaccountbean/remote"); out.println("<br> 调 用 B.Add() 的 结 果 是 :"+ B.Add(1,1)); out.println("<br> 调 用 B.getResult() 的 结 果 :"+ B.getResult()); catch (Exception e) { out.println(e.getmessage()); %> 上 面 JSP 客 户 端, 有 A 和 B 两 个 用 户 在 使 用 MyAccountBean, 他 们 的 执 行 结 果 如 下 : 调 用 A.Add() 的 结 果 是 :2 调 用 A.getResult() 的 结 果 :2 ======================================== 调 用 B.Add() 的 结 果 是 :2 调 用 B.getResult() 的 结 果 :2 因 为 stateful session bean 的 每 个 用 户 都 有 自 己 的 一 个 实 例, 所 以 两 者 对 stateful session bean 的 操 作 不 会 影 响 对 方 另 外 注 意 : 如 果 后 面 需 要 操 作 某 个 用 户 的 实 例, 你 必 须 在 客 户 端 缓 存 Bean 的 Stub 对 象 (JSP 通 常 的 做 法 是 用 Session 缓 存 ), 这 样 在 后 面 每 次 调 用 中, 容 器 才 知 道 要 提 供 相 同 的 bean 实 例 本 例 子 的 EJB 源 代 码 在 StatefulBean 文 件 夹 ( 源 代 码 下 载 : 项 目 中 使 用 到 的 类 库 在 上 级 目 录 lib 文 件 夹 下 要 恢 复 StatefulBean 项 目 的 开 发 环 境 请 参 考 第 三 章 如 何 恢 复 本 书 配 套 例 子 的 开 发 环 境, 要 发 布 本 例 子 EJB ( 确 保 配 置 了 环 境 变 量 JBOSS_HOME 及 启 动 了 Jboss), 你 可 以 执 行 Ant 的 deploy 任 务 本 例 子 的 客 户 端 代 码 在 EJBTest 文 件 夹, 要 发 布 客 户 端 应 用, 你 可 以 执 行 Ant 的 deploy 任 务 通 过 访 问 客 户 端 4.3 Stateless Session Bean 与 Stateful Session Bean 的 区 别 这 两 种 Session Bean 都 可 以 将 系 统 逻 辑 放 在 方 法 之 中 执 行, 不 同 的 是 Stateful Session Bean 可 以 记 录 呼 叫 者 的 状 态, 因 此 一 个 使 用 者 会 有 自 己 的 一 个 实 例 Stateless Session Bean 虽 然 也 是 逻 辑 组 件, 但 是 他 却 不 负 责 记 录 使 用 者 状 态, 也 就 是 说 当 使 用 者 呼 叫 Stateless Session Bean 的 时 候,EJB 容 器 并 不 会 寻 找 特 定 的 Stateless Session Bean 的 实 体 来 执 行 这 个 method 换 言 之, 很 可 能 数 个 使 用 者 在 执 行 某 个 Stateless Session Bean 的 methods 时, 会 是 同 一 个 Bean 的 实 例 在 执 行 从 内 存 方 面 来 看,Stateful Session Bean 与 Stateless Session Bean 比 较,Stateful Session Bean 会 消 耗 J2EE Server 较 多 的 内 存, 然 而 Stateful Session Bean 的 优 势 却 在 于 他 可 以 维 持 使 用 者 的 状 态
41 4.4 如 何 改 变 Session Bean 的 JNDI 名 称 默 认 的 JNDI 命 名 规 则 前 面 已 经 介 绍 过, 但 有 些 情 况 下 需 要 自 定 义 名 称 要 自 定 义 JNDI 名 称, 可 以 使 注 注 释 指 定 Session Bean 的 Local 接 口 的 JNDI 名 注 释 指 定 Session Bean 的 Remote 接 口 的 JNDI 名 称, 下 面 的 代 码 展 示 了 如 何 自 定 义 JNDI 名 : //author:lihuoming package com.foshanshop.ejb3.impl; import javax.ejb.local; import javax.ejb.remote; import javax.ejb.stateless; import com.foshanshop.ejb3.localoperation; import com.foshanshop.ejb3.operation; import org.jboss.annotation.ejb.localbinding; (jndibinding="foshanshop/localoperation") public class OperationBean implements Operation, LocalOperation { private int total = 0; private int addresult = 0; public int Add(int a, int b) { addresult = a + b; return addresult; public int getresult() { total += addresult; return total; 在 JSP 客 户 端 调 用 上 面 EJB 的 代 码 片 断 如 下 : InitialContext ctx = new InitialContext(props); Operation operation = (Operation) ctx.lookup("foshanshop/remoteoperation"); 4.5 Session Bean 的 生 命 周 期 EJB 容 器 创 建 和 管 理 session bean 实 例, 有 些 时 候, 你 可 能 需 要 定 制 session bean 的 管 理 过 程 例 如, 你 可 能 想 在 创 建 session bean 实 例 的 时 候 初 始 化 字 段 变 量, 或 在 bean 实 例 被 销 毁 的 时 候 关 掉 外 部 资 源 上 述 这 些, 你 都 可 能 通 过 在 bean 类 中 定 义 生 命 周 期 的 回 调 方 法 来 实 现 这 些 方 法 将 会 被 容 器 在 生 命 周 期 的 不 同 阶 段 调 用 ( 如 : 创 建 或 销
42 毁 时 ) 通 过 使 有 下 面 所 列 的 注 释,EJB 3.0 允 许 你 将 任 何 方 法 指 定 为 回 调 方 法 这 不 同 于 EJB 2.1,EJB 2.1 中, 所 有 的 回 调 方 法 必 须 实 现, 即 使 是 空 的 EJB 3.0 中,bean 可 以 有 任 意 数 量, 任 意 名 字 的 回 调 方 当 bean 对 象 完 成 实 例 化 后, 使 用 了 这 个 注 释 的 方 法 会 被 立 即 调 用 这 个 注 释 同 时 适 用 于 有 状 态 和 无 状 态 的 会 话 使 用 这 个 注 释 的 方 法 会 在 容 器 从 它 的 对 象 池 中 销 毁 一 个 无 用 的 或 者 过 期 的 bean 实 例 之 前 调 用 这 个 注 释 同 时 适 用 于 有 状 态 和 无 状 态 的 会 话 当 一 个 有 状 态 的 session bean 实 例 空 闲 过 长 的 时 间, 容 器 将 会 钝 化 (passivate) 它, 并 把 它 的 状 态 保 存 在 缓 存 当 中 使 用 这 个 注 释 的 方 法 会 在 容 器 钝 化 bean 实 例 之 前 调 用 这 个 注 释 适 用 于 有 状 态 的 会 话 bean 当 钝 化 后, 又 经 过 一 段 时 间 该 bean 仍 然 没 有 被 操 作, 容 器 将 会 把 它 从 存 储 介 质 中 删 除 以 后, 任 何 针 对 该 bean 方 法 的 调 用 容 器 都 会 抛 出 例 当 客 户 端 再 次 使 用 已 经 被 钝 化 的 有 状 态 session bean 时, 新 的 实 例 被 创 建, 状 态 被 恢 复 使 用 此 注 释 的 session bean 会 在 bean 的 激 活 完 成 时 调 用 这 个 注 释 只 适 用 于 有 状 态 的 会 话 这 个 注 释 指 定 了 有 状 态 session bean 初 始 化 的 方 法 它 区 别 注 释 在 于 : 多 注 释 方 法 可 以 同 时 存 在 于 有 状 态 session bean 中, 但 每 个 bean 实 例 只 会 有 一 注 释 的 方 法 会 被 调 用 这 取 决 于 bean 是 如 何 创 建 的 ( 细 节 请 看 EJB 3.0 规 范 之 后 被 调 用 另 一 个 有 用 的 生 命 周 期 方 法 注 释 特 别 是 对 于 有 状 态 session bean 当 应 用 通 过 存 根 对 象 调 用 使 用 注 释 的 方 法 时, 容 器 就 知 道 在 该 方 法 执 行 完 毕 后, 要 把 bean 实 例 从 对 象 池 中 移 走 下 面 是 这 些 生 命 周 期 方 法 注 释 在 LifeCycleBean 中 的 一 个 示 例 : LifeCycleBean.java //author:lihuoming package com.foshanshop.ejb3.impl; import com.foshanshop.ejb3.lifecycle; import javax.annotation.postconstruct; import javax.annotation.predestroy; import javax.ejb.init; import javax.ejb.postactivate; import javax.ejb.prepassivate; import javax.ejb.remote; import javax.ejb.remove; ({LifeCycle.class) public class LifeCycleBean implements LifeCycle { public String Say() { try { Thread.sleep(1000*30); catch (InterruptedException e) { e.printstacktrace(); return " 这 是 会 话 Bean 生 命 周 期 应 用 例 子 ";
43 @Init public void initialize () { System.out.println("initialize() 方 法 被 调 用 public void Construct () { System.out.println("Construct() 方 法 被 调 用 public void exit () { System.out.println("exit() 方 法 被 调 用 public void serialize () { System.out.println("serialize() 方 法 被 调 用 public void activate () { System.out.println("activate() 方 法 被 调 用 public void stopsession () { System.out.println("stopSession() 方 法 被 调 用 "); // 调 用 该 方 法 以 通 知 容 器 移 除 该 bean 实 例 终 止 会 话 方 法 体 可 以 是 空 的 本 例 子 的 运 行 结 果 输 出 在 Jboss 控 制 台, 请 仔 细 观 察 下 面 是 LifeCycleBean 的 Remote 接 口 LifeCycle.java //author:lihuoming package com.foshanshop.ejb3; public interface LifeCycle { public String Say(); public void stopsession (); 下 面 是 Session Bean 的 JSP 客 户 端 代 码 : LifeCycleTest.jsp
44 page contenttype="text/html; charset=gbk"%> page import="com.foshanshop.ejb3.lifecycle, javax.naming.*, java.util.properties"%> <% Properties props = new Properties(); props.setproperty("java.naming.factory.initial", "org.jnp.interfaces.namingcontextfactory"); props.setproperty("java.naming.provider.url", "localhost:1099"); props.setproperty("java.naming.factory.url.pkgs", "org.jboss.naming"); try { LifeCycle lifecycle = (LifeCycle) session.getattribute("lifecycle"); if (lifecycle == null) { InitialContext ctx = new InitialContext(props); lifecycle = (LifeCycle) ctx.lookup("lifecyclebean/remote"); session.setattribute ("lifecycle", lifecycle); out.println(lifecycle.say()); out.println("<br> 请 注 意 观 察 Jboss 控 制 台 输 出. 等 待 9 分 钟 左 右, 容 器 将 会 钝 化 此 会 话 Bean,@PrePassivate 注 释 的 方 法 将 会 执 行 <BR>"); out.println("<font color=red> 你 可 以 执 行 会 话 Bean 的 stopsession 方 法, 把 会 话 Bean 实 例 从 对 象 池 中 移 走 在 销 毁 这 个 会 话 Bean 之 前 将 会 执 注 释 的 方 法 <BR></font>"); /* lifecycle.stopsession(); */ catch (Exception e) { out.println(e.getmessage()); %> 本 例 子 的 EJB 源 代 码 在 SessionBeanLifeCycle 文 件 夹 ( 源 代 码 下 载 : 项 目 中 使 用 到 的 类 库 在 上 级 目 录 lib 文 件 夹 下 要 恢 复 SessionBeanLifeCycle 项 目 的 开 发 环 境 请 参 考 第 三 章 如 何 恢 复 本 书 配 套 例 子 的 开 发 环 境, 要 发 布 本 例 子 EJB ( 确 保 配 置 了 环 境 变 量 JBOSS_HOME 及 启 动 了 Jboss), 你 可 以 执 行 Ant 的 deploy 任 务 本 例 子 的 客 户 端 代 码 在 EJBTest 文 件 夹, 要 发 布 客 户 端 应 用, 你 可 以 执 行 Ant 的 deploy 任 务 通 过 访 问 客 户 端 4.6 拦 截 器 (Interceptor) 拦 截 器 可 以 监 听 程 序 的 一 个 或 所 有 方 法 拦 截 器 对 方 法 调 用 流 提 供 了 细 粒 度 控 制 可 以 在 无 状 态 会 话 bean 有 状 态 会 话 bean 和 消 息 驱 动 bean 上 使 用 它 们 拦 截 器 可 以 是 同 一 bean 类 中 的 方 法 或 是 一 个 外 部 类 下 面 介 绍 如 何 在 Session Bean 类 中 使 用 外 部 拦 截 器 类
45 HelloChinaBean.java //author:lihuoming package com.foshanshop.ejb3.impl; import com.foshanshop.ejb3.hellochina; import com.foshanshop.ejb3.hellochinaremote; import javax.ejb.local; import javax.ejb.remote; import javax.ejb.stateless; @Interceptors({HelloInterceptor.class) public class HelloChinaBean implements HelloChina,HelloChinaRemote { public String SayHello(String name) { return name +" 说 : 你 好! 中 国."; public String Myname() { return " 我 是 佛 山 人 注 释 指 定 一 个 或 多 个 在 外 部 类 中 定 义 的 拦 截 器 上 面 拦 截 器 HelloInterceptor 对 HelloChinaBean 中 的 所 有 方 法 进 行 监 听 拦 截 器 HelloInterceptor.java //author:lihuoming package com.foshanshop.ejb3.impl; import javax.interceptor.aroundinvoke; import javax.interceptor.invocationcontext; public class HelloInterceptor public Object log(invocationcontext ctx) throws Exception { System.out.println("*** HelloInterceptor intercepting"); long start = System.currentTimeMillis(); try{ if (ctx.getmethod().getname().equals("sayhello")){ System.out.println("*** SayHello 已 经 被 调 用! *** " ); if (ctx.getmethod().getname().equals("myname")){ System.out.println("*** Myname 已 经 被 调 用! *** " );
46 return ctx.proceed(); catch (Exception e) { throw e; finally { long time = System.currentTimeMillis() - start; System.out.println(" 用 时 :"+ time + 注 释 指 定 了 要 用 作 拦 截 器 的 方 法 注 释 指 定 的 方 法 必 须 遵 守 以 下 格 式 : public Object XXX(InvocationContext ctx) throws Exception XXX 代 表 方 法 名 可 以 任 意 下 面 是 HelloChinaBean 的 本 地 及 远 程 业 务 接 口 HelloChina.java //author:lihuoming package com.foshanshop.ejb3; public interface HelloChina extends HelloChinaRemote{ HelloChinaRemote.java //author:lihuoming package com.foshanshop.ejb3; public interface HelloChinaRemote { public String SayHello(String name); public String Myname(); 下 面 是 Session Bean 的 JSP 客 户 端 代 码 : InterceptorTest.jsp <%@ page contenttype="text/html; charset=gbk"%> <%@ page import="com.foshanshop.ejb3.hellochinaremote, javax.naming.*, java.util.properties"%> <% Properties props = new Properties(); props.setproperty("java.naming.factory.initial", "org.jnp.interfaces.namingcontextfactory"); props.setproperty("java.naming.provider.url", "localhost:1099"); props.setproperty("java.naming.factory.url.pkgs", "org.jboss.naming"); InitialContext ctx; try { ctx = new InitialContext(props); HelloChinaRemote hellochinaremote = (HelloChinaRemote) ctx.lookup("hellochinabean/remote"); out.println(hellochinaremote.sayhello(" 佛 山 人 "));
47 %> out.println("<br>"+ hellochinaremote.myname()); catch (NamingException e) { out.println(e.getmessage()); 除 了 可 以 在 外 部 定 义 拦 截 器 之 外, 还 可 以 将 Session Bean 中 的 一 个 或 多 个 方 法 定 义 为 拦 截 器 下 面 以 上 面 的 HelloChinaBean 为 例, 介 绍 在 Session Bean 中 如 何 定 义 拦 截 器 HelloChinaBean.java //author:lihuoming package com.foshanshop.ejb3.impl; import com.foshanshop.ejb3.hellochina; import com.foshanshop.ejb3.hellochinaremote; import javax.ejb.local; import javax.ejb.remote; import javax.ejb.stateless; import javax.interceptor.aroundinvoke; public class HelloChinaBean implements HelloChina,HelloChinaRemote { public String SayHello(String name) { return name +" 说 : 你 好! 中 国."; public String Myname() { return " 我 是 佛 山 人 public Object log(invocationcontext ctx) throws Exception { try{ if (ctx.getmethod().getname().equals("sayhello")){ System.out.println("*** HelloChinaBean.SayHello() 已 经 被 调 用! *** " ); if (ctx.getmethod().getname().equals("myname")){ System.out.println("*** HelloChinaBean.Myname() 已 经 被 调 用! *** " ); return ctx.proceed(); catch (Exception e) { throw e;
拦截器(Interceptor)的学习
二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器
More informationStateless Session Beans(无状态bean)的学习
一 Stateless Session Beans( 无状态 bean) 的学习 第一步 : 要定义一个会话 Bean, 首先需要定义一个包含他所有业务方法的接口 这个接口不需要任何注释, 就像普通的 java 接口那样定义 调用 EJB 的客户端通过使用这个接口引用从 EJB 容器得到的会话 Bean 对象 stub 接口的定义如下: HelloWorld.java package com.foshanshop.ejb3;
More informationEJB3.0实例教程.doc
Jboss EJB3.0 实例教程 第一章前言...5 1.1 本教程适合人群...5 1.2 联系作者...5 1.3 EJB3.0 实例教程 官方 MSN 群...5 1.4 版权声明...5 第二章运行环境配置...6 2.1 下载与安装...6 2.2 运行一个 EJB3 例子...10 2.3 在独立的 TOMCAT 中调用 EJB...10 2.4 发布在 JBOSS 中的 WEB 应用调用
More informationEJB-Programming-4-cn.doc
EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session
More informationEJB3.0实例教程.doc
Jboss EJB3.0 实例教程 第一章前言...4 1.1 本教程适合人群...4 1.2 联系作者...4 第二章运行环境配置...4 2.1 下载与安装...4 2.2 运行一个 EJB3 例子...9 2.3 在独立的 TOMCAT 中调用 EJB...9 2.4 发布在 JBOSS 集成环境中的 WEB 应用调用 EJB...10 第三章开发前的准备...10 3.1 熟悉 JBOSS
More informationEJB-Programming-3.PDF
:, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client
More informationMicrosoft Word - EJB3.0实例教程1.doc
第一章前言...5 1.1 本教程适合人群...5 1.2 联系作者...5 1.3 EJB3.0 实例教程 官方 MSN 群...5 1.4 版权声明...6 第二章运行环境配置...6 2.1 下载与安装...6 2.2 运行一个 EJB3 例子...8 2.3 熟悉 JBOSS 的目录结构...8 2.4 JBOSS 中的部署...9 2.5 在单独的 TOMCAT 或 J2SE 中调用 EJB...9
More informationMicrosoft Word - ejb3.0实例教程.docx
EJB3.0 实例教程是 EJB3.0 入门经典 的精简版 第一章 EJB 知识与运行环境配置...7 1.1 什么是 ENTERPRICE JAVABEANS(EJB)...7 1.2 EJB 的运行环境...7 1.3 什么是 JNDI...7 1.4 下载与安装 JDK...8 1.5 下载与安装 ECLIPSE...9 1.6 下载与安装 JBOSS...9 1.7 运行第一个 EJB3 例子...11
More information1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6
www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7
More information(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit
Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How
More informationIoC容器和Dependency Injection模式.doc
IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component
More information内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指
内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 导 你 搭 建 Linux 平 台 下 的 JAVA 开 发 环 境, 包 括 JDK 以 及 集
More informationRunPCPB8 new feature.PDF
Client/Server Web N-Tier PowerBuilder 8.0 PowerBuilder 8.0 IDE Client/Server Web PowerBuilder / Web-based IT IDE PowerBuilder PowerBuilder 8.0 PowerBuilder 8.0 PowerBuilder 8.0 PowerBuilder Sybase PowerBuilder
More informationXXXXXXXX http://cdls.nstl.gov.cn 2 26
[ ] [ ] 2003-7-18 1 26 XXXXXXXX http://cdls.nstl.gov.cn 2 26 (2003-7-18) 1...5 1.1...5 1.2...5 1.3...5 2...6 2.1...6 2.2...6 2.3...6 3...7 3.1...7 3.1.1...7 3.1.2...7 3.1.2.1...7 3.1.2.1.1...8 3.1.2.1.2...10
More informationuntitled
JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE
More informationKillTest 质量更高 服务更好 学习资料 半年免费更新服务
KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-091 Title : Sun Certified Bus.Component Developer Java EE Platform 5 Version : DEMO 1 / 11 1. Which is a valid PostConstruct method in
More information新・解きながら学ぶJava
481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --
More information1
PRIMETON TECHNOLOGIES, LTD. EOS EOS Manager No part of this document may be reproduced, stored in any electronic retrieval system, or transmitted in any form or by any means, mechanical, photocopying,
More informationJava 1 Java String Date
JAVA SCJP Java 1 Java String Date 1Java 01 Java Java 1995 Java Java 21 Java Java 5 1-1 Java Java 1990 12 Patrick Naughton C++ C (Application Programming Interface API Library) Patrick Naughton NeXT Stealth
More informationepub 61-2
2 Web Dreamweaver UltraDev Dreamweaver 3 We b We b We Dreamweaver UltraDev We b Dreamweaver UltraDev We b We b 2.1 Web We b We b D r e a m w e a v e r J a v a S c r i p t We b We b 2.1.1 Web We b C C +
More informationuntitled
4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker
More informationChapter 9: Objects and Classes
Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(
More information优迈科技教学大纲2009版本
java 软 件 工 程 师 培 训 教 学 大 纲 1 JAVA 软 件 工 程 师 培 训 教 学 大 纲 深 圳 软 件 园 人 才 实 训 基 地 2009 年 3 月 目 录 java 软 件 工 程 师 培 训 教 学 大 纲 2 教 学 阶 段...3 第 一 章 JAVA 起 步...3 第 二 章 面 向 对 象 的 编 程...4 第 三 章 数 据 结 构 IO 线 程 网 络...5
More information1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10
Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1
More information詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入
100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入
More information《大话设计模式》第一章
第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜
More information<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>
基 于 Android 平 台 的 电 子 拍 卖 系 统 摘 要 本 电 子 拍 卖 系 统 其 实 就 是 一 个 电 子 商 务 平 台, 只 要 将 该 系 统 部 署 到 互 联 网 上, 客 户 都 可 以 在 该 系 统 上 发 布 想 出 售 的 商 品, 也 可 以 对 拍 卖 中 的 商 品 参 与 竞 价 整 个 过 程 无 须 人 工 干 预, 由 系 统 自 动 完 成 本
More informationEclipse C C++, or
Eclipse C C++, Emailctchen@pl.csie.ntut.edu.tw or s1669021@ntut.edu.tw, s2598003@ntut.edu.tw http://pl.csie.ntut.edu.tw/~ctchen, http://www.ntut.edu.tw/~s2598003/ 2004/9/10 (0.02 ) Eclipse http://www.eclipse.org
More information北 风 网 讲 师 原 创 作 品 ---- 仅 供 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见
北 风 网 讲 师 原 创 作 品 ---- 仅 供 www.ibeifeng.com 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见 者 远 ; 顺 风 而 呼, 声 非 加 疾 也, 而 闻 者 彰 假 舆 马 者, 非 利 足 也,
More informationRUN_PC連載_12_.doc
PowerBuilder 8 (12) PowerBuilder 8.0 PowerBuilder PowerBuilder 8 PowerBuilder 8 / IDE PowerBuilder PowerBuilder 8.0 PowerBuilder PowerBuilder PowerBuilder PowerBuilder 8.0 PowerBuilder 6 PowerBuilder 7
More information11 天 山 区 区 环 卫 清 运 队 机 械 工 程 师 4011 C 1 不 限 不 限 机 电 具 有 两 以 工 作 经 12 天 山 区 乌 鲁 木 齐 市 第 15 小 会 计 4012 C 1 不 限 不 限 会 计 财 会 财 电 算 化 临 床 医 预 防 医 公 共 卫 生 与
2013 乌 鲁 木 齐 市 事 业 单 工 作 员 表 序 1 天 山 区 区 委 财 经 领 导 小 组 办 公 室 ( 金 融 工 作 办 公 室 ) 金 融 工 作 专 干 4001 C 2 不 限 不 限 硕 士 研 究 生 会 计 财 务 管 理 财 务 会 计 基 建 会 计 行 政 事 业 财 务 会 计 2 天 山 区 区 园 林 队 会 计 4002 C 1 不 限 不 限 财
More informationuntitled
Work Managers 什 Work Managers? WebLogic Server 9.x 行 (thread) 理 thread pool 數量 立 execute queues 來 量 理 thread count, thread priority 參數 理 thread pool 數量? WebLogic Server 9.x 理 行 (thread) (self-tuning) 句
More informationKillTest 质量更高 服务更好 学习资料 半年免费更新服务
KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-090 Title : Sun Certified Business Component Developer for J2EE 1.3 Version : Demo 1 / 10 1. Which two must be in an ejb-jar file, either
More information2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难
第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级
More informationuntitled
PowerBuilder Tips 利 PB11 Web Service 年度 2 PB Tips PB9 EAServer 5 web service PB9 EAServer 5 了 便 web service 來說 PB9 web service 力 9 PB11 release PB11 web service 力更 令.NET web service PB NVO 論 不 PB 來說 說
More informationABSSetup.doc
WebSphere Application Server 5.1 & ABS V1.01 2004 11 WebSphere Application Server 5... 3 WebSphere Application Server 5... 3 1 Windows WebSphere... 3 WebSphere Application Server 5... 4 1... 4 2... 4 3
More information目 录 目 录... 2 1 平 台 概 述... 3 2 技 术 架 构... 4 3 技 术 特 点... 7 3.1 基 于 统 一 平 台 的 多 产 品 线 支 撑... 7 3.2 先 进 性... 7 3.3 安 全 性... 7 3.4 开 放 性... 8 3.5 高 性 能 和
致 远 协 同 管 理 软 件 V5 平 台 白 皮 书 北 京 致 远 协 创 软 件 有 限 公 司 2014 年 6 月 1 / 20 目 录 目 录... 2 1 平 台 概 述... 3 2 技 术 架 构... 4 3 技 术 特 点... 7 3.1 基 于 统 一 平 台 的 多 产 品 线 支 撑... 7 3.2 先 进 性... 7 3.3 安 全 性... 7 3.4 开 放
More informationuntitled
-JAVA 1. Java IDC 20 20% 5 2005 42.5 JAVA IDC JAVA 60% 70% JAVA 3 5 10 JAVA JAVA JAVA J2EE J2SE J2ME 70% JAVA JAVA 20 1 51 2. JAVA SUN JAVA J2EE J2EE 3. 1. CSTP CSTP 2 51 2. 3. CSTP IT CSTP IT IT CSTP
More informationweblogic
Weblogic Allen Long allen@huihoo.com http://www.huihoo.com 2004-04 1 WebLogic, WLS WLS Domain 2 Weblogic6.1 Weblogic6.1 J2EE1.2,J2EE1.3 HTTP 1.1 J2EE Connector Architecture 1.0 J2EE EJB 2.0 J2EE JDBC 2.0
More information基于CDIO一体化理念的课程教学大纲设计
Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授
More information2 Requirements Documentation Doc Name Doc No. 1.0 Version No. Total Page Generated By V6.0.0 Generated Date 2011/10/21 Checked By Checked Date 2011/10
1 2 Requirements Documentation Doc Name Doc No. 1.0 Version No. Total Page Generated By V6.0.0 Generated Date 2011/10/21 Checked By Checked Date 2011/10/26 Approved By Approved Date Version Modification
More information<4D6963726F736F667420576F7264202D20C8EDBCFEA1B232303130A1B33136BAC5A3BAB9D8D3DAB7A2B2BC32303130C4EAC8EDBCFEB9A4B3CCCAB5D1B5D6AED0A3C4DABFC6D1D0CFEEC4BFB5C4CDA8D6AA2E646F63>
附 件 4 软 件 学 院 第 六 届 软 件 创 新 设 计 大 赛 专 题 项 目 项 目 1 指 导 老 师 : 林 倞 潘 炎 曾 坤 项 目 ( 课 题 ) 名 称 : 基 于 GraphCut 算 法 的 快 速 图 像 分 割 技 术 图 像 分 割 是 图 像 处 理 的 基 本 技 术 之 一, 也 是 图 像 分 析 的 最 基 本 的 步 骤, 作 为 计 算 机 视 觉 的
More informationLiveBOS产品白皮书
面 向 对 象 的 业 务 支 撑 平 台 与 建 模 工 具 * 实 现 应 您 所 需, 随 时 而 变 的 应 用 * 业 务 管 理 应 用 软 件 最 佳 选 择 * LiveBOS 产 品 白 皮 书 LiveBOS 产 品 白 皮 书 福 建 顶 点 软 件 股 份 有 限 公 司 www.livebos.com Copyright c 1996-2009 版 权 所 有 福 建 顶
More informationKillTest 质量更高 服务更好 学习资料 半年免费更新服务
KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int
More informationuntitled
How to using M-Power Report API M-Power Report API 力 了 M-Power Report -- Java (Library) M-Power Report API 行 Java M-Power Report M-Power Report API ( 30 ) PDF/HTML/CSV/XLS JPEG/PNG/SVG 料 料 OutputStream
More informationMicrosoft Word - 01.DOC
第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的
More informationLiveBOS产品白皮书
面 向 对 象 的 业 务 支 撑 平 台 与 建 模 工 具 * 实 现 应 您 所 需, 随 时 而 变 的 应 用 * 业 务 管 理 应 用 软 件 最 佳 选 择 * LiveBOS 产 品 白 皮 书 LiveBOS 产 品 白 皮 书 福 州 顶 点 信 息 管 理 有 限 公 司 http://www.apexinfo.com.cn Copyright c 2008-2015 版 权
More information1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 7.0 1. 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访
发 行 公 告 jconnect for JDBC 7.0 文 档 ID:DC74874-01-0700-01 最 后 修 订 日 期 :2010 年 3 月 2 日 主 题 页 码 1. 访 问 最 新 发 行 公 告 信 息 2 2. 产 品 摘 要 2 3. 特 殊 安 装 说 明 2 3.1 查 看 您 的 jconnect 版 本 3 4. 特 殊 升 级 指 导 3 4.1 迁 移 3
More informationchp6.ppt
Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行
More information國家圖書館典藏電子全文
EAI EAI Middleware EAI 3.1 EAI EAI Client/Server Internet,www,Jav a 3.1 EAI Message Brokers -Data Transformation Business Rule XML XML 37 3.1 XML XML XML EAI XML 1. XML XML Java Script VB Script Active
More informationMicrosoft PowerPoint - ch6 [相容模式]
UiBinder wzyang@asia.edu.tw UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner
More information目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1
科 技 部 自 由 軟 體 專 案 原 始 程 式 碼 使 用 手 冊 Source Code Manual of NSC Open Source Project 可 信 賴 的 App 安 全 應 用 框 架 -App 應 用 服 務 可 移 轉 性 驗 證 Trusted App Framework -Transferability Verification on App MOST 102-2218-E-011-012
More informationuntitled
653 JAVA 2008 11 Institution of Software Engineer... 2... 4... 4... 5... 5... 8... 8... 8... 8... 8... 9... 9... 9... 11... 13... 13... 13... 13... 15... 15... 15... 15... 16... 16... 17... 17... 17...
More informationuntitled
Velocity 14 100061 315@pptph.com.cn http://www.pptph.com.cn 010-67129212 010-67129211 787 1092 1/16 22 535 1 0 000 2001 11 1 2001 11 1 ISBN 7-115-09828-X/TP 2577 32.00 01067129223 1 2 1 2 3 4 5 1 Velocity
More information循经指压疗法
循 经 指 压 疗 法 陈 玉 琴 0 自 序 我 没 有 进 过 医 学 院, 更 没 有 学 过 解 剖 学 我 是 一 个 自 学 中 医 的 人, 思 考 问 题 本 着 简 单 化 和 直 观 的 原 则 循 经 指 压 健 康 疗 法 就 是 我 二 十 年 实 践 的 心 得 体 会 愿 以 此 作 向 资 深 的 中 医 师 请 教, 尤 其 是 中 医 大 的 教 师, 如 果 你
More information从 因 人 设 事 谈 起 一 部 文 学 作 品 ( 尤 其 是 长 篇 小 说 ) 的 结 构 至 关 重 要, 因 为 它 是 文 本 整 体 的 组 织 方 式 和 内 部 构 造, 既 是 形 式 又 是 内 容 ; 乃 是 表 达 主 题 最 有 效 的 艺 术 手 段 元 代 戏 曲
凤 头 猪 肚 豹 尾 凤 头 猪 肚 豹 尾 谈 死 水 微 澜 的 结 构 艺 术 艾 芦 摘 要 : 论 文 从 死 水 微 澜 的 人 物 和 场 景 描 写 入 手, 具 体 地 分 析 了 这 部 长 篇 小 说 的 艺 术 结 构, 同 时 针 对 以 往 研 究 者 的 某 些 观 点 提 出 了 不 同 的 见 解 ; 认 为 作 品 以 精 粹 见 长, 以 少 胜 多, 由 小
More informationMicrosoft Word - HERBRECIPES《中國藥膳》.doc
中 國 藥 膳 僅 供 參 考, 請 勿 亂 服 若 欲 服 用, 自 行 負 責 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 藥 膳 系 列 總 目 錄 第 一 章 總 論 第 一 節 簡 介 第 二 節 特 點 1. 注 重 整 體, 辯 證 施 食 2. 防 治 兼 宜, 效 果 顯 著 3. 良 藥 可 口, 服 食 方 便 第 三 節 藥 膳 內 容 與 分 類
More information毛主席的猪
在 孔 孟 之 乡 掘 孔 孟 后 裔 的 坟, 在 生 产 队 的 田 里 放 毛 主 席 的 猪, 也 只 有 知 青 才 有 这 " 特 权 " 吟 了 < 血 色 黄 昏 >, 叹 了 < 蹉 跎 岁 月 >, 再 哼 一 哼 知 青 生 活 中 那 千 韵 百 律 的 曲 曲 小 调 儿, 也 别 有 一 番 滋 味 在 心 头 扒 坟 梁 平 扒 坟, 是 当 地 老 百 姓 的 叫 法
More information辽 宁 时 代 万 恒 控 股 集 团 有 限 公 司 大 事 记 (2009 年 ) 集 团 办 公 室 编 辑 1 一 2009 年 组 织 沿 革 ( 一 ) 集 团 总 部 组 织 机 构 ( 部 门 设 置 ) 图 示 辽 宁 时 代 万 恒 控 股 集 团 有 限 公 司 监 事 会 董 事 会 党 委 董 事 会 秘 书 经 理 层 工 会 纪 委 信 办 企 审 财 国 党 监 息
More information附件1.FIT)
附 件 : 上 海 市 科 技 创 新 人 才 激 励 政 策 操 作 指 南 上 海 市 科 技 创 新 人 才 激 励 政 策 操 作 指 南 2011 年 1 月 国 有 企 业 科 技 创 新 激 励 操 作 指 南 附 件 : 上 海 市 科 技 创 新 人 才 激 励 政 策 操 作 指 南 目 录 1. 人 才 引 进 132 1.1 上 海 市 户 籍 及 居 住 证 132 1.2
More informationepub83-1
C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C
More information北魏山东佛教文化个案研究
北 魏 山 东 佛 教 文 化 个 案 研 究 一 北 魏 时 期 佛 教 在 山 东 的 传 播 与 发 展 以 滨 州 博 兴 龙 华 寺 为 代 表 社 会 背 景 北 魏 佛 教 的 发 展 是 伴 随 着 佛 教 的 中 国 化 即 汉 化 的 过 程 而 不 断 发 展 的, 同 时 也 带 有 北 魏 统 治 者 作 为 少 数 民 族 的 本 身 特 色 自 汉 通 西 域, 佛 教
More information23 10 18 5 1997 12 1 (1) (7) (16) (25) (35) (37) (44) (48) (51) (54) ( ) (58) (69) (74) (77) (89) (94) (98) (100) (107) (113) (117) (121) (126) " 37 38 ( ) ( ) ( ) ( ) 300 1 500 200 1938 1 30 15 8 1937
More informationPowerPoint Presentation
数 字 化 校 园 信 息 平 台 解 决 方 案 杭 州 正 方 电 子 工 程 有 限 公 司 2007.10 杭 州 正 方 电 子 工 程 有 限 公 司 简 介 正 方 公 司 成 立 于 1999 年 1 月 份, 现 有 员 工 170 多 名, 是 经 相 关 机 构 认 定 的 高 新 技 术 企 业 软 杭 件 企 州 业 正, 取 方 得 电 计 算 子 机 工 软 件 程 著
More information执 行 引 擎 JSP : java 嵌 入 进 HTML 中 在 server 端 运 行 时 把 整 个.jsp 文 件 翻 译 成 Servlet 格 式 用 户 不 用 手 动 把 <html> 改 为 java 语 言 打 印 jsp 替 用 户 完 成 jsp --> jasper --
Tomcat 基 础 java 基 础 概 念 : 特 性 : 面 向 对 象 多 线 程 结 构 化 错 误 处 理 垃 圾 收 集 动 态 链 接 动 态 扩 展 JDK : Java Development Kit ( java 开 发 工 具 包 ) 包 含 了 一 个 jvm JVM : Java 虚 拟 机 JAR 文 档 格 式 JDBC : JAVA 连 接 数 据 库 j2se :
More information季刊9web.indd
在 全 国 现 场 会 上 成 功 展 示 全 国 烟 叶 收 购 暨 现 代 烟 草 农 业 建 设 现 场 会 7 月 6 日 至 8 日 在 昆 明 召 开 在 国 家 局 的 领 导 下, 由 我 司 技 术 开 发 的 烟 站 ( 单 元 ) 烟 叶 管 理 信 息 系 统 在 现 场 会 上 成 功 展 示, 并 得 到 参 会 领 导 及 代 表 们 的 关 注 与 认 可 该 系 统
More informationFileMaker 16 ODBC 和 JDBC 指南
FileMaker 16 ODBC JDBC 2004-2017 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. FileMaker WebDirect FileMaker Cloud FileMaker,
More informationMicrosoft Word - Hibernate与Struts2和Spring组合指导.doc
1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build
More information附录J:Eclipse教程
附 录 J:Eclipse 教 程 By Y.Daniel Liang 该 帮 助 文 档 包 括 以 下 内 容 : Eclipse 入 门 选 择 透 视 图 创 建 项 目 创 建 Java 程 序 编 译 和 运 行 Java 程 序 从 命 令 行 运 行 Java Application 在 Eclipse 中 调 试 提 示 : 在 学 习 完 第 一 章 后 使 用 本 教 程 第
More informationuntitled
1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart
More informationFileMaker 15 ODBC 和 JDBC 指南
FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. / FileMaker WebDirect FileMaker, Inc. FileMaker
More information<4D6963726F736F667420576F7264202D2031A3AD4A617661BCBCCAF5CAC6CDB7D5FDBEA22E646F63>
Java 技 术 的 势 头 正 劲 清 华 大 学 计 算 机 科 学 与 技 术 系 李 涓 子 徐 鹏 王 克 宏 Java 技 术 已 经 遍 布 世 界 各 个 角 落, 从 智 能 卡 Java 手 机 和 电 话, 到 汽 车 生 产 以 至 于 控 制 火 星 漫 游 者 号 的 临 界 任 务 系 统 都 能 看 到 它 的 作 用,Java 已 经 成 为 一 种 普 遍 深 入
More informationJava java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,
http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY
More information95 1. 2. 2
59 62 ( ) 1 1 95 1. 2. 2 (1) (2) (3) (4) (5) 3. (1) (2) (3) 1. 3 3 4 1 2 *> 38 * 1 *< * * ** ** 38 + 35 2 X6 1 1 $7,500,000 10 X7 $5,550,000 X8 12 31 X9 2 28 $4,600,000 X9 2 28 $7,500,000 10 $750,000 X7
More information09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)
09 (File Processes) 9-1 9-2 (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) Java Servlet 9-1 Servlet (File Processes) Client Servlet Servlet Java Java (Stream)
More informationuntitled
1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override
More information1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:
Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed
More informationebook
26 JBuilder RMI Java Remote Method Invocation R M I J a v a - - J a v a J a v J a v a J a v a J a v a R M I R M I ( m a r s h a l ) ( u n m a r c h a l ) C a ff e i n e J a v a j a v a 2 i i o p J a v
More information最即時的Sybase ASE Server資料庫診斷工具
How to using M-Power Server 行 M-Power Report setup.exe M-Power Report Server MPRS 了 說 M-Power Report Server 料 行 料 料 M-Power Report Server J2SE Development Kit 5.0 連 port 料 MPRS Web-Application MPRS Page
More informationWebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..
WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips (dougep@us.ibm.com),, IBM Developer Technical Support Center
More informationKillTest 质量更高 服务更好 学习资料 半年免费更新服务
KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard
More informationSymantec™ Sygate Enterprise Protection 防护代理安装使用指南
Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate
More information60 50 42 10 32
2006 9 1 24 N*2M E1 2M VPN 60 50 42 10 32 1 2 3 4 5 2006 1 2 3 4 5 6 B/S 7 1 2 10M/100M 2K 500ms 10000 2M 5 Windows IBM AIX HP Unix Linux CPU SMP Cluster Weblogic Webshpere Tomcat JBoss, Oracle Sybase
More information300 1 360 2 0 90 180 270 3 4 5 360 6 25 360 2
1 360 360 3000 1000 300 1 360 2 0 90 180 270 3 4 5 360 6 25 360 2 4). 3 L U 4 < 5 1 6 2 7 3 8 4 9 5 10 1 10 29 39 9 100 10 6 404 504 12 15 13 14 15 13 16 14 25 1996 2007 2007 < 7 294753618 8 ">. 9 10 1984
More informationJBuilder Weblogic
JUnit ( bliu76@yeah.net) < >6 JUnit Java Erich Gamma Kent Beck JUnit JUnit 1 JUnit 1.1 JUnit JUnit java XUnit JUnit 1.2 JUnit JUnit Erich Gamma Kent Beck Erich Gamma Kent Beck XP Extreme Programming CRC
More information學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘
ITE 資 訊 專 業 人 員 鑑 定 資 料 庫 系 統 開 發 與 設 計 實 務 試 卷 編 號 :IDS101 注 意 事 項 一 本 測 驗 為 單 面 印 刷 試 題, 共 計 十 三 頁 第 二 至 十 三 頁 為 四 十 道 學 科 試 題, 測 驗 時 間 90 分 鐘 : 每 題 2.5 分, 總 測 驗 時 間 為 90 分 鐘 二 執 行 CSF 測 驗 系 統 -Client
More informationKillTest 质量更高 服务更好 学习资料 半年免费更新服务
KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)
More information6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM
CHAPTER 6 SQL SQL SQL 6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM 3. 1986 10 ANSI SQL ANSI X3. 135-1986
More information没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型
文 章 编 号 :1007-757X(2012)1-0036-04 领 域 驱 动 模 型 的 WEB 软 件 系 统 设 计 研 究 摘 要 : J2EE 3 JDK1.7 Tomcat WEB 关 键 词 : 中 图 分 类 号 :TP311 文 献 标 志 码 :A 0 引 言 Web 软 件 系 统 的 分 层 结 构 典 型 的 J2EE 软 件 系 统 开 发 方 法 分 为 三 层 结
More informationBasic System Administration
基 本 系 统 管 理 ESX Server 3.5 ESX Server 3i 版 本 3.5 Virtual Center 2.5 基 本 管 理 指 南 基 本 管 理 指 南 修 订 时 间 :20080410 项 目 :VI-CHS-Q208-490 我 们 的 网 站 提 供 最 新 的 技 术 文 档, 网 址 为 : http://www.vmware.com/cn/support/
More informationBPS6.0 Web服务集成和短流程功能使用手册
PRIMETON TECHNOLOGIES, LTD. 上 海 普 元 信 息 技 术 有 限 责 任 公 司 BPS6.0 Web 服 务 集 成 和 短 流 程 使 用 手 册 2009-9-1 第 1 页 共 16 页 目 录 1 Web 服 务 集 成... 3 1.1 Web 服 务 简 述... 3 1.2 在 BPS 中 使 用 Web 服 务 功 能... 3 1.2.1 使 用 Web
More information<4D6963726F736F667420576F7264202D20B1A6BCA6CAD0C7F8D3F2CEC0C9FAD0C5CFA2C6BDCCA8BBA5C1AABBA5CDA8CAB5CAA9B9E6B7B6>
宝 鸡 市 区 域 卫 生 信 息 平 台 互 联 互 通 实 施 规 范 ( 版 本 2.0 讨 论 稿 ) 宝 鸡 市 卫 生 局 2014 年 10 月 1 / 38 目 录 前 言... 3 第 一 章 适 用 范 围... 4 第 二 章 规 范 引 用 文 件... 4 第 三 章 术 语 和 定 义... 5 3.1 术 语... 5 3.2 定 义... 8 第 四 章 前 置 接
More informationTopTest_Adminstrator.doc
壹 前 言... 3 貳 系 統 簡 介... 4 一 TKB multimedia Top-Test 系 統 架 構...4 1. 使 用 者 介 面 層 (Presentation tier)...5 2. 商 業 邏 輯 層 (business logic tier)...5 3. 資 料 服 務 層 (data services tier)...5 二 TKB Multimedia Top-Test
More informationD getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ
第 四 章 Filter( 过 滤 器 ) 样 题 A 卷 一 选 择 题 ( 每 小 题 2 分, 共 20 分 ) 1 下 面 选 项 中, 用 于 实 现 初 始 化 过 滤 器 的 方 法 是 ( ) A init(filterconfig filterconfig) B dofilter(servletrequest req,servletresponse resp,filterchain
More informationuntitled
rxli@public.wh.hb.cn http://idc.hust.edu.cn/~rxli/ 2 3 ( ) (Distributed System) Integrated System () 4 5 6 System Integration 7 8 Integrated System 9 1.1 CIMS IDEF CSCW STEP MIS MRPII ERP CRM SCM MIS:
More information<4D6963726F736F667420576F7264202D20C9CFBAA3CAD0D0D0D5FEB9DCC0EDD1A7D0A332303131C4EAB6C8C9E7BBE1D4F0C8CEB1A8B8E6A3A8323031322E362E3139A3A92E646F63>
上 海 市 行 政 管 理 学 校 2011 年 度 文 明 单 位 社 会 责 任 报 告 2012 年 4 月 目 录 第 一 部 分 公 开 陈 述...3 第 二 部 分 学 校 概 况...5 I-1 规 模 与 性 质...5 I-2 所 属 类 别...6 I-3 组 织 机 构...6 第 三 部 分 主 要 参 数...7 I-1 报 告 篇 幅...7 I-2 报 告 时 效 与
More information(\244j\257d\276\307\274\351_201508021-C.indd_70%.pdf)
1847-1852 1872 20 1 1896 8000 20 1896 1950 1 1896 1896 13 1900 1900 3 20 2 4 1910 1950 3 1911 1 2 3 4 1927 4 20 300 6 1906 1930 7 1911 5 1919 8 1914 9 1920 10 11 1902 200 6 12 1930 7 " # #! $! 14 15! "!
More informationRunPC2_.doc
PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection
More informationFAQ -PowerDesigner9.5.DOC
PowerDesigner 9.5 FAQ 1. PowerDesigner PowerDesigner PowerDesigner (CASE Tool,Computer Aided Software Engineering) PowerDesigner 1989 9.5 2. PowerDesigner PowerDesigner Internet ( Java) PowerDesigner 7.0
More informationuntitled
1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立
More information