通過E-mail共享Java對象

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 包, 包 括 序 列 化 接 口。

通過E-mail共享Java對象
  JDK1.1 的 新 功 能-- 序 列 化 接 口(Serializable interface), 簡 化 了 對 象 持 久 化(Persistence) 的 實 現。 以 下 介 紹 如 何 通 過SMTP E-mail 將 對 象 傳 送 給 另 一 個 用 戶。----------------...查看完整版>>通過E-mail共享Java對象
 
通過E-mail 共享Java 對象
JDK1.1的新功能--序列化接口(Serializableinterface),簡化了對象持久化(Persistence)的實現。以下介紹如何通過SMTPE-mail將對象傳送給另一個用戶。   摘要:一些應用程序需要以一種非實時的方式(例如旅行指南、...查看完整版>>通過E-mail 共享Java 對象
 
通過E-mail共享Java對象
  JDK1.1的新功能--序列化接口(Serializableinterface),簡化了對象持久化(Persistence)的實現。以下介紹如何通過SMTPE-mail將對象傳送給另一個用戶。  摘要:一些應用程序需要以一種非實時的方式(例如旅行指南...查看完整版>>通過E-mail共享Java對象
 
通過E-mail共享Java對象
  JDK1.1的新功能--序列化接口(Serializableinterface),簡化了對象持久化(Persistence)的實現。以下介紹如何通過SMTPE-mail將對象傳送給另一個用戶。  摘要:一些應用程序需要以一種非實時的方式(例如旅行指南...查看完整版>>通過E-mail共享Java對象
 
通過Java套接字傳遞對象
通過Java套接字傳遞對象
  使用javaTM遠程方法調用(RMI),可以很方便地開發分布式的基于對象的應用程序。RMI的簡單性,是由網絡通信的費用作爲代價的。底層的套接字可以用來開發客戶/服務器系統,但是由于大多數Java I/O類和對象不太輕易...查看完整版>>通過Java套接字傳遞對象
 
Delphi與C++之間通過實現函數與對象共享
實在說,我對delphi的理解不是很深入,使用它寫過一些小程序,不過鑒于borland的傳奇,還是看了李維那本vcl內幕剖析,最終的感覺不是對delphi多麽狂熱,反而是另樣的深入理解了c++的優缺點以及模式設計一些理念的深...查看完整版>>Delphi與C++之間通過實現函數與對象共享
 
通過實例學習Java對象的構造過程
通過實例學習Java對象的構造過程
  本文提供一個項目中的錯誤實例,提供對其觀察和分析,揭示出java語言實例化一個對象具體過程,最後總結出設計Java類的一個重要規則。通過閱讀本文,可以使Java程序員理解Java對象的構造過程,從而設計出更加健壯...查看完整版>>通過實例學習Java對象的構造過程
 
Java Mail API及其應用 —— 一個郵件列表服務器的實現 (三)(轉貼)
  相關資源1.Java Mail API軟件包下載(版本1.1.2)    FTP://usmt.java.sun.com/pub/javamail/tyo39/javamail1_1_2.zip    缺省POP3實現軟件包下載:    ftp://usmt.java.sun.com/pub/javamial/tyo39/pop3...查看完整版>>Java Mail API及其應用 —— 一個郵件列表服務器的實現 (三)(轉貼)
 
Java Mail API及其應用 —— 一個郵件列表服務器的實現 (四)(轉貼)
  附錄:ListServer.Java/*** 類ListServer提供基本的郵件列表服務功能:讀取指定郵件帳號的所有新郵件,然後轉發給* 在emailListFile文件中指定的所有郵件帳號(訂閱者).emailListFile中的郵件帳號格式* 爲每一行一...查看完整版>>Java Mail API及其應用 —— 一個郵件列表服務器的實現 (四)(轉貼)
 
 
回到王朝網路移動版首頁