EJB3.0实例教程.doc

Size: px
Start display at page:

Download "EJB3.0实例教程.doc"

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)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

Stateless Session Beans(无状态bean)的学习

Stateless Session Beans(无状态bean)的学习 一 Stateless Session Beans( 无状态 bean) 的学习 第一步 : 要定义一个会话 Bean, 首先需要定义一个包含他所有业务方法的接口 这个接口不需要任何注释, 就像普通的 java 接口那样定义 调用 EJB 的客户端通过使用这个接口引用从 EJB 容器得到的会话 Bean 对象 stub 接口的定义如下: HelloWorld.java package com.foshanshop.ejb3;

More information

EJB3.0实例教程.doc

EJB3.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 information

EJB-Programming-4-cn.doc

EJB-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 information

EJB3.0实例教程.doc

EJB3.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 information

EJB-Programming-3.PDF

EJB-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 information

Microsoft Word - EJB3.0实例教程1.doc

Microsoft 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 information

Microsoft Word - ejb3.0实例教程.docx

Microsoft 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 information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.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

(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 information

IoC容器和Dependency Injection模式.doc

IoC容器和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 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 导 你 搭 建 Linux 平 台 下 的 JAVA 开 发 环 境, 包 括 JDK 以 及 集

More information

RunPCPB8 new feature.PDF

RunPCPB8 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 information

XXXXXXXX http://cdls.nstl.gov.cn 2 26

XXXXXXXX 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 information

untitled

untitled 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 information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 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

新・解きながら学ぶ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 information

1

1 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 information

Java 1 Java String Date

Java 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 information

epub 61-2

epub 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 information

untitled

untitled 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 information

Chapter 9: Objects and Classes

Chapter 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版本

优迈科技教学大纲2009版本 java 软 件 工 程 师 培 训 教 学 大 纲 1 JAVA 软 件 工 程 师 培 训 教 学 大 纲 深 圳 软 件 园 人 才 实 训 基 地 2009 年 3 月 目 录 java 软 件 工 程 师 培 训 教 学 大 纲 2 教 学 阶 段...3 第 一 章 JAVA 起 步...3 第 二 章 面 向 对 象 的 编 程...4 第 三 章 数 据 结 构 IO 线 程 网 络...5

More information

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

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 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 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63> 基 于 Android 平 台 的 电 子 拍 卖 系 统 摘 要 本 电 子 拍 卖 系 统 其 实 就 是 一 个 电 子 商 务 平 台, 只 要 将 该 系 统 部 署 到 互 联 网 上, 客 户 都 可 以 在 该 系 统 上 发 布 想 出 售 的 商 品, 也 可 以 对 拍 卖 中 的 商 品 参 与 竞 价 整 个 过 程 无 须 人 工 干 预, 由 系 统 自 动 完 成 本

More information

Eclipse C C++, or

Eclipse 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 information

RUN_PC連載_12_.doc

RUN_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 information

11 天 山 区 区 环 卫 清 运 队 机 械 工 程 师 4011 C 1 不 限 不 限 机 电 具 有 两 以 工 作 经 12 天 山 区 乌 鲁 木 齐 市 第 15 小 会 计 4012 C 1 不 限 不 限 会 计 财 会 财 电 算 化 临 床 医 预 防 医 公 共 卫 生 与

11 天 山 区 区 环 卫 清 运 队 机 械 工 程 师 4011 C 1 不 限 不 限 机 电 具 有 两 以 工 作 经 12 天 山 区 乌 鲁 木 齐 市 第 15 小 会 计 4012 C 1 不 限 不 限 会 计 财 会 财 电 算 化 临 床 医 预 防 医 公 共 卫 生 与 2013 乌 鲁 木 齐 市 事 业 单 工 作 员 表 序 1 天 山 区 区 委 财 经 领 导 小 组 办 公 室 ( 金 融 工 作 办 公 室 ) 金 融 工 作 专 干 4001 C 2 不 限 不 限 硕 士 研 究 生 会 计 财 务 管 理 财 务 会 计 基 建 会 计 行 政 事 业 财 务 会 计 2 天 山 区 区 园 林 队 会 计 4002 C 1 不 限 不 限 财

More information

untitled

untitled 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 information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 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 information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

untitled

untitled 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 information

ABSSetup.doc

ABSSetup.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 高 性 能 和

目 录 目 录... 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 information

untitled

untitled -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 information

weblogic

weblogic 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一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

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

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 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>

<4D6963726F736F667420576F7264202D20C8EDBCFEA1B232303130A1B33136BAC5A3BAB9D8D3DAB7A2B2BC32303130C4EAC8EDBCFEB9A4B3CCCAB5D1B5D6AED0A3C4DABFC6D1D0CFEEC4BFB5C4CDA8D6AA2E646F63> 附 件 4 软 件 学 院 第 六 届 软 件 创 新 设 计 大 赛 专 题 项 目 项 目 1 指 导 老 师 : 林 倞 潘 炎 曾 坤 项 目 ( 课 题 ) 名 称 : 基 于 GraphCut 算 法 的 快 速 图 像 分 割 技 术 图 像 分 割 是 图 像 处 理 的 基 本 技 术 之 一, 也 是 图 像 分 析 的 最 基 本 的 步 骤, 作 为 计 算 机 视 觉 的

More information

LiveBOS产品白皮书

LiveBOS产品白皮书 面 向 对 象 的 业 务 支 撑 平 台 与 建 模 工 具 * 实 现 应 您 所 需, 随 时 而 变 的 应 用 * 业 务 管 理 应 用 软 件 最 佳 选 择 * LiveBOS 产 品 白 皮 书 LiveBOS 产 品 白 皮 书 福 建 顶 点 软 件 股 份 有 限 公 司 www.livebos.com Copyright c 1996-2009 版 权 所 有 福 建 顶

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 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 information

untitled

untitled 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 information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

LiveBOS产品白皮书

LiveBOS产品白皮书 面 向 对 象 的 业 务 支 撑 平 台 与 建 模 工 具 * 实 现 应 您 所 需, 随 时 而 变 的 应 用 * 业 务 管 理 应 用 软 件 最 佳 选 择 * LiveBOS 产 品 白 皮 书 LiveBOS 产 品 白 皮 书 福 州 顶 点 信 息 管 理 有 限 公 司 http://www.apexinfo.com.cn Copyright c 2008-2015 版 权

More information

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 7.0 1. 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访

1. 访 问 最 新 发 行 公 告 信 息 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 information

chp6.ppt

chp6.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 information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft 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

目 錄 版 次 變 更 記 錄... 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 information

untitled

untitled 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 information

untitled

untitled 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 information

Microsoft Word - HERBRECIPES《中國藥膳》.doc

Microsoft Word - HERBRECIPES《中國藥膳》.doc 中 國 藥 膳 僅 供 參 考, 請 勿 亂 服 若 欲 服 用, 自 行 負 責 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 藥 膳 系 列 總 目 錄 第 一 章 總 論 第 一 節 簡 介 第 二 節 特 點 1. 注 重 整 體, 辯 證 施 食 2. 防 治 兼 宜, 效 果 顯 著 3. 良 藥 可 口, 服 食 方 便 第 三 節 藥 膳 內 容 與 分 類

More information

毛主席的猪

毛主席的猪 在 孔 孟 之 乡 掘 孔 孟 后 裔 的 坟, 在 生 产 队 的 田 里 放 毛 主 席 的 猪, 也 只 有 知 青 才 有 这 " 特 权 " 吟 了 < 血 色 黄 昏 >, 叹 了 < 蹉 跎 岁 月 >, 再 哼 一 哼 知 青 生 活 中 那 千 韵 百 律 的 曲 曲 小 调 儿, 也 别 有 一 番 滋 味 在 心 头 扒 坟 梁 平 扒 坟, 是 当 地 老 百 姓 的 叫 法

More information



 辽 宁 时 代 万 恒 控 股 集 团 有 限 公 司 大 事 记 (2009 年 ) 集 团 办 公 室 编 辑 1 一 2009 年 组 织 沿 革 ( 一 ) 集 团 总 部 组 织 机 构 ( 部 门 设 置 ) 图 示 辽 宁 时 代 万 恒 控 股 集 团 有 限 公 司 监 事 会 董 事 会 党 委 董 事 会 秘 书 经 理 层 工 会 纪 委 信 办 企 审 财 国 党 监 息

More information

附件1.FIT)

附件1.FIT) 附 件 : 上 海 市 科 技 创 新 人 才 激 励 政 策 操 作 指 南 上 海 市 科 技 创 新 人 才 激 励 政 策 操 作 指 南 2011 年 1 月 国 有 企 业 科 技 创 新 激 励 操 作 指 南 附 件 : 上 海 市 科 技 创 新 人 才 激 励 政 策 操 作 指 南 目 录 1. 人 才 引 进 132 1.1 上 海 市 户 籍 及 居 住 证 132 1.2

More information

epub83-1

epub83-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 information

23 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 information

PowerPoint Presentation

PowerPoint Presentation 数 字 化 校 园 信 息 平 台 解 决 方 案 杭 州 正 方 电 子 工 程 有 限 公 司 2007.10 杭 州 正 方 电 子 工 程 有 限 公 司 简 介 正 方 公 司 成 立 于 1999 年 1 月 份, 现 有 员 工 170 多 名, 是 经 相 关 机 构 认 定 的 高 新 技 术 企 业 软 杭 件 企 州 业 正, 取 方 得 电 计 算 子 机 工 软 件 程 著

More information

执 行 引 擎 JSP : java 嵌 入 进 HTML 中 在 server 端 运 行 时 把 整 个.jsp 文 件 翻 译 成 Servlet 格 式 用 户 不 用 手 动 把 <html> 改 为 java 语 言 打 印 jsp 替 用 户 完 成 jsp --> jasper --

执 行 引 擎 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

季刊9web.indd 在 全 国 现 场 会 上 成 功 展 示 全 国 烟 叶 收 购 暨 现 代 烟 草 农 业 建 设 现 场 会 7 月 6 日 至 8 日 在 昆 明 召 开 在 国 家 局 的 领 导 下, 由 我 司 技 术 开 发 的 烟 站 ( 单 元 ) 烟 叶 管 理 信 息 系 统 在 现 场 会 上 成 功 展 示, 并 得 到 参 会 领 导 及 代 表 们 的 关 注 与 认 可 该 系 统

More information

FileMaker 16 ODBC 和 JDBC 指南

FileMaker 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 information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft 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教程 附 录 J:Eclipse 教 程 By Y.Daniel Liang 该 帮 助 文 档 包 括 以 下 内 容 : Eclipse 入 门 选 择 透 视 图 创 建 项 目 创 建 Java 程 序 编 译 和 运 行 Java 程 序 从 命 令 行 运 行 Java Application 在 Eclipse 中 调 试 提 示 : 在 学 习 完 第 一 章 后 使 用 本 教 程 第

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

FileMaker 15 ODBC 和 JDBC 指南

FileMaker 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>

<4D6963726F736F667420576F7264202D2031A3AD4A617661BCBCCAF5CAC6CDB7D5FDBEA22E646F63> Java 技 术 的 势 头 正 劲 清 华 大 学 计 算 机 科 学 与 技 术 系 李 涓 子 徐 鹏 王 克 宏 Java 技 术 已 经 遍 布 世 界 各 个 角 落, 从 智 能 卡 Java 手 机 和 电 话, 到 汽 车 生 产 以 至 于 控 制 火 星 漫 游 者 号 的 临 界 任 务 系 统 都 能 看 到 它 的 作 用,Java 已 经 成 为 一 种 普 遍 深 入

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java 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 information

95 1. 2. 2

95 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 information

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

09 (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 information

untitled

untitled 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 information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: 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 information

ebook

ebook 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資料庫診斷工具

最即時的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 information

WebSphere 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... 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 information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 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 information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

60 50 42 10 32

60 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 information

300 1 360 2 0 90 180 270 3 4 5 360 6 25 360 2

300 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 information

JBuilder Weblogic

JBuilder 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) 的 敘

學 科 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 information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 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 information

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

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 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 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

没 有 多 余 的 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 information

Basic System Administration

Basic 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 information

BPS6.0 Web服务集成和短流程功能使用手册

BPS6.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>

<4D6963726F736F667420576F7264202D20B1A6BCA6CAD0C7F8D3F2CEC0C9FAD0C5CFA2C6BDCCA8BBA5C1AABBA5CDA8CAB5CAA9B9E6B7B6> 宝 鸡 市 区 域 卫 生 信 息 平 台 互 联 互 通 实 施 规 范 ( 版 本 2.0 讨 论 稿 ) 宝 鸡 市 卫 生 局 2014 年 10 月 1 / 38 目 录 前 言... 3 第 一 章 适 用 范 围... 4 第 二 章 规 范 引 用 文 件... 4 第 三 章 术 语 和 定 义... 5 3.1 术 语... 5 3.2 定 义... 8 第 四 章 前 置 接

More information

TopTest_Adminstrator.doc

TopTest_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 information

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ

D 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 information

untitled

untitled 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>

<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)

(\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 information

RunPC2_.doc

RunPC2_.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 information

FAQ -PowerDesigner9.5.DOC

FAQ -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 information

untitled

untitled 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