| 订阅 | 在线投稿
分享
 
 
 

通过E-mail共享Java对象

来源:互联网网民  宽屏版  评论
2008-05-31 12:10:40

JDK1.1 的 新 功 能-- 序 列 化 接 口(Serializable interface), 简 化 了 对 象 持 久 化(Persistence) 的 实 现。 以 下 介 绍 如 何 通 过SMTP E-mail 将 对 象 传 送 给 另 一 个 用 户。

--------------------------------------------------------------------------------

摘 要: 一 些 应 用 程 序 需 要 以 一 种 非 实 时 的 方 式( 例 如 旅 行 指 南、 错 误 报 告(bug report)、 时 间 表(time sheet) 等) 和 其 余 用 户 共 享 对 象。 Java 语 言 开 发 工 具 包(JDK)1.1 版 提 供 了 一 个 重 要 的 功 能: java.io.Serializable 接 口。 该 技 术 能 让 你 知 道 如 何 序 列 化 一 个 对 象, 然 后 用e-mail 传 给 其 它 用 户。

对 象 持 久 化 和 用 户 间 对 象 共 享 是 许 多 商 业 解 决 方 案 的 基 础。 例 如,一个公 司 可 以 用 从 本 公 司 网 址 启 动 的Applet 来 完 成 一 个 时 间 表 的 制 作。 同 样 该公 司 也 可 以 提 供 象 具 有 开 支 报 告、 旅 行 指 南、 错 误 报 告(bug report) 等 功 能 的Applet。 在 这 些 情 况 下, 从Applet 的 使 用 者 获 得 的 数 据 需 要 和 负 责 薪 水、 付 款、旅 行 房 间 预 订 的 人 们 共 享。 执 行 这 些 职 能 的 人 们 可 能 分 布 在 不 同 的 城 市和 国 家, 可 能 工 作 在 不 同 的 时 区, 不 能 希 望 每 个 工 作 人 员 都 能 象 猫 头 鹰 一 样在 晚 上 工 作 以 填 写 这 样 的 表 格。 相 同 的 信 息 也 不 应 该 重 新 输 入。 因 此, 能 够存 储 并 且 把 这 些 相 关 对 象 传 送 到 商 业 应 用 中 是 这 些applet 有 别 于 其 它applet 的 优 势。

目 前 已 经 有 许 多 方 法 能 实 现 对 象 的 持 久 化, 例 如 使 用 对 象 数 据 库 和 磁盘 文 件。 同 样 的 也 有 许 多 办 法 可 以 共 享 对 象, 例 如 将 数 据 写 入 一 个 套 接 字, 或 者 实 现 一 个 符 合CORBA, SOM 的 模 型。 以 上 这 几 种 方 案 均 有 自 己 的 优 点, 当 你 设 计 你 的 商 业 解 决 方 案 时, 需 要 认 真 地 考 虑 这 些 方 案。 但 是, 还 有 一 种 开 销 不 大 但 可 靠 的 方 法, 它 使 用Internet 和Intranet 用 户 能 够 获 取 的 技 术 服 务 在 世 界 范 围 传 送 对 象 的 拷 贝。 它 就 是 简 单 邮 件 传 输 协 议, SMTP。

用E-mail 发 送Java 对 象

存 储 和 保 存 对 象 的 一 个 简 单 方 法 是 将 对 象 序 列 化 而 后 用E-mail 将 它 发 送 给 别 的 用 户。 这 种 方 法 有 以 下 优 点:

发 送 的 计 算 机 或NC( 网 络 计 算 机) 无 需 硬 盘 空 间

使 用 现 有 的 系 统 传 送、 排 队、 发 送 对 象

允 许 用 户 使 用 最 喜 欢 的 邮 件 客 户 程 序 来 接 受 邮 件

提 供 简 单 的 机 制 将 同 一 对 象 的 拷 贝 分 发 给 许 多 人

这 种 方 法 也 有 不 足 之 处:

邮 件 的 传 送 可 能 因 为E-mail 主 机 的 关 机 而 被 较 长 时 间 地 延 迟。 所 有 的 主 机 都 可 能 出 现 这 种 情 况, E-mail 服 务 器 的 错 误 恢 复 优 先 级 通 常 比 数 据 库 服 务 器 低。

邮 件 的 传 送 不 能 得 到 保 证-- 在 你 的E-mail 服 务 器 通 知 你 邮 件 没 有 发 出 时, 你 不 得 不 重 新 发 送 邮 件。

E-mail 服 务 器 和POP 客 户 程 序 的 功 能 不 足 以 处 理 大 量 交 易 信 息。

这 些 不 足 和 你 使 用 的 应 用 程 序 有 关。 对 于 很 多 商 业 解 决 方 案, 这 些 不 足 并 不 重 要。 作 为 一 个 设 计 人 员, 你 工 作 的 一 部 分 就 是 在 全 面 考 虑 价 格、 性 能 和 需 求 的 情 况 下 确 定 系 统 的 最 佳 整 体 结 构。

使 用Java 传 送 对 象 的 四 个 步 骤:

Applet 必 须 依 次 以 下 面 所 列 出 的 四 个 步 骤 传 送Java 对 象:

序 列 化 有 关 对 象

发 送 时 选 择Base64 编 码 方 式 对 序 列 化 对 象 编 码(RFC 1521)

与 一 个SMTP 服 务 器 连 接

将 该 对 象 传 送 到 这 个SMTP 服 务 器

下 面 将 介 绍 如 何 用E-mail 发 送 一 个 假 设 的" 臭 虫" 报 告 到 公 司 的 质 量 保 证 部 门。

将 对 象 序 列 化

JDK1.1 提 供 的 一 个 奇 妙 的 机 制, java.io.Serializable 接 口, 能 够 序 列 化 并 且 重 建 对 象。 这 个 接 口 能 使 用 存 储 对 象(writeObject()) 和 恢 复 对 象(readObject()) 方 法 函 数。 在 很 多 情 况 下, 使 用 这 个 接 口 很 方 便, 只 需 实 现 并 且 调 用 这 两 个 方 法 函 数。

以 下 的 代 码 定 义 了 一 个 简 单 的BugReport 对 象, 它 实 现 了 最 简 单 的 序 列化接 口。

1 import java.Io.*;

2 public class BugReport implements Serializable {

3 private Float m_SoftwareVersion; // version number from Help.About, e.g. "1.0"

4 private String m_ErrorDescription; // Description of error

5 private int m_Severity; // 1=System unusable - 5=Minor Aesthetic defect

6 public BugReport (Float SoftwareVersion, String ErrorDescription, int Severity) {

7 m_SoftwareVersion = SoftwareVersion;

8 m_ErrorDesctiption = ErrorDescription;

9 m_Severity = Severity;

10 }

11 public BugReport () {} // for reconstituting serialized objects

12 public void save (OutputStream os)

13 throws IOException {

14 try {

15 ObjectOutputStream o = new ObjectOutputStream(os);

16 o.writeObject(this);

17 o.flush();

18 }

19 catch (IOException e) {throw e;}

20 }

21 public BugReport restore (InputStream is)

22 throws IOException, ClassNotFoundException {

23 BugReport RestoredBugReport = null;

24 try {

25 ObjectInputStream o = new ObjectInputStream(is);

26 RestoredBugReport = (BugReport)o.readObject();

27 }

28 catch (IOException e) {throw e;}

29 catch (ClassNotFoundException e) {throw e;}

30 return RestoredBugReport;

31 }

32 }

1 使 用import 语 句 引 入I/O 包, 包 括 序 列 化 接 口。

 
特别声明:以上内容(如有图片或视频亦包括在内)为网络用户发布,本站仅提供信息存储服务。
 
  JDK1.1 的 新 功 能-- 序 列 化 接 口(Serializable interface), 简 化 了 对 象 持 久 化(Persistence) 的 实 现。 以 下 介 绍 如 何 通 过SMTP E-mail 将 对 象 传 送 给 另 一 个 用 户。 -------------------------------------------------------------------------------- 摘 要: 一 些 应 用 程 序 需 要 以 一 种 非 实 时 的 方 式( 例 如 旅 行 指 南、 错 误 报 告(bug report)、 时 间 表(time sheet) 等) 和 其 余 用 户 共 享 对 象。 Java 语 言 开 发 工 具 包(JDK)1.1 版 提 供 了 一 个 重 要 的 功 能: java.io.Serializable 接 口。 该 技 术 能 让 你 知 道 如 何 序 列 化 一 个 对 象, 然 后 用e-mail 传 给 其 它 用 户。 对 象 持 久 化 和 用 户 间 对 象 共 享 是 许 多 商 业 解 决 方 案 的 基 础。 例 如,一个公 司 可 以 用 从 本 公 司 网 址 启 动 的Applet 来 完 成 一 个 时 间 表 的 制 作。 同 样 该公 司 也 可 以 提 供 象 具 有 开 支 报 告、 旅 行 指 南、 错 误 报 告(bug report) 等 功 能 的Applet。 在 这 些 情 况 下, 从Applet 的 使 用 者 获 得 的 数 据 需 要 和 负 责 薪 水、 付 款、旅 行 房 间 预 订 的 人 们 共 享。 执 行 这 些 职 能 的 人 们 可 能 分 布 在 不 同 的 城 市和 国 家, 可 能 工 作 在 不 同 的 时 区, 不 能 希 望 每 个 工 作 人 员 都 能 象 猫 头 鹰 一 样在 晚 上 工 作 以 填 写 这 样 的 表 格。 相 同 的 信 息 也 不 应 该 重 新 输 入。 因 此, 能 够存 储 并 且 把 这 些 相 关 对 象 传 送 到 商 业 应 用 中 是 这 些applet 有 别 于 其 它applet 的 优 势。 目 前 已 经 有 许 多 方 法 能 实 现 对 象 的 持 久 化, 例 如 使 用 对 象 数 据 库 和 磁盘 文 件。 同 样 的 也 有 许 多 办 法 可 以 共 享 对 象, 例 如 将 数 据 写 入 一 个 套 接 字, 或 者 实 现 一 个 符 合CORBA, SOM 的 模 型。 以 上 这 几 种 方 案 均 有 自 己 的 优 点, 当 你 设 计 你 的 商 业 解 决 方 案 时, 需 要 认 真 地 考 虑 这 些 方 案。 但 是, 还 有 一 种 开 销 不 大 但 可 靠 的 方 法, 它 使 用Internet 和Intranet 用 户 能 够 获 取 的 技 术 服 务 在 世 界 范 围 传 送 对 象 的 拷 贝。 它 就 是 简 单 邮 件 传 输 协 议, SMTP。 用E-mail 发 送Java 对 象 存 储 和 保 存 对 象 的 一 个 简 单 方 法 是 将 对 象 序 列 化 而 后 用E-mail 将 它 发 送 给 别 的 用 户。 这 种 方 法 有 以 下 优 点: 发 送 的 计 算 机 或NC( 网 络 计 算 机) 无 需 硬 盘 空 间 使 用 现 有 的 系 统 传 送、 排 队、 发 送 对 象 允 许 用 户 使 用 最 喜 欢 的 邮 件 客 户 程 序 来 接 受 邮 件 提 供 简 单 的 机 制 将 同 一 对 象 的 拷 贝 分 发 给 许 多 人 这 种 方 法 也 有 不 足 之 处: 邮 件 的 传 送 可 能 因 为E-mail 主 机 的 关 机 而 被 较 长 时 间 地 延 迟。 所 有 的 主 机 都 可 能 出 现 这 种 情 况, E-mail 服 务 器 的 错 误 恢 复 优 先 级 通 常 比 数 据 库 服 务 器 低。 邮 件 的 传 送 不 能 得 到 保 证-- 在 你 的E-mail 服 务 器 通 知 你 邮 件 没 有 发 出 时, 你 不 得 不 重 新 发 送 邮 件。 E-mail 服 务 器 和POP 客 户 程 序 的 功 能 不 足 以 处 理 大 量 交 易 信 息。 这 些 不 足 和 你 使 用 的 应 用 程 序 有 关。 对 于 很 多 商 业 解 决 方 案, 这 些 不 足 并 不 重 要。 作 为 一 个 设 计 人 员, 你 工 作 的 一 部 分 就 是 在 全 面 考 虑 价 格、 性 能 和 需 求 的 情 况 下 确 定 系 统 的 最 佳 整 体 结 构。 使 用Java 传 送 对 象 的 四 个 步 骤: Applet 必 须 依 次 以 下 面 所 列 出 的 四 个 步 骤 传 送Java 对 象: 序 列 化 有 关 对 象 发 送 时 选 择Base64 编 码 方 式 对 序 列 化 对 象 编 码(RFC 1521) 与 一 个SMTP 服 务 器 连 接 将 该 对 象 传 送 到 这 个SMTP 服 务 器 下 面 将 介 绍 如 何 用E-mail 发 送 一 个 假 设 的" 臭 虫" 报 告 到 公 司 的 质 量 保 证 部 门。 将 对 象 序 列 化 JDK1.1 提 供 的 一 个 奇 妙 的 机 制, java.io.Serializable 接 口, 能 够 序 列 化 并 且 重 建 对 象。 这 个 接 口 能 使 用 存 储 对 象(writeObject()) 和 恢 复 对 象(readObject()) 方 法 函 数。 在 很 多 情 况 下, 使 用 这 个 接 口 很 方 便, 只 需 实 现 并 且 调 用 这 两 个 方 法 函 数。 以 下 的 代 码 定 义 了 一 个 简 单 的BugReport 对 象, 它 实 现 了 最 简 单 的 序 列化接 口。 1 import java.Io.*; 2 public class BugReport implements Serializable { 3 private Float m_SoftwareVersion; // version number from Help.About, e.g. "1.0" 4 private String m_ErrorDescription; // Description of error 5 private int m_Severity; // 1=System unusable - 5=Minor Aesthetic defect 6 public BugReport (Float SoftwareVersion, String ErrorDescription, int Severity) { 7 m_SoftwareVersion = SoftwareVersion; 8 m_ErrorDesctiption = ErrorDescription; 9 m_Severity = Severity; 10 } 11 public BugReport () {} // for reconstituting serialized objects 12 public void save (OutputStream os) 13 throws IOException { 14 try { 15 ObjectOutputStream o = new ObjectOutputStream(os); 16 o.writeObject(this); 17 o.flush(); 18 } 19 catch (IOException e) {throw e;} 20 } 21 public BugReport restore (InputStream is) 22 throws IOException, ClassNotFoundException { 23 BugReport RestoredBugReport = null; 24 try { 25 ObjectInputStream o = new ObjectInputStream(is); 26 RestoredBugReport = (BugReport)o.readObject(); 27 } 28 catch (IOException e) {throw e;} 29 catch (ClassNotFoundException e) {throw e;} 30 return RestoredBugReport; 31 } 32 } 1 使 用import 语 句 引 入I/O 包, 包 括 序 列 化 接 口。
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有