在本系列文章的 第 1 部分 中,我們介紹了如何使用 Notes/Domino 6 來整合 Amazon Web Service。我 們確信很多讀者很想瞭解如何使用 J2EE 來建立類似的應用程式,因為 IBM 已經從技術方面做出了很多努力 。因此,在本文中,我們將介紹如何使用 J2EE 來重新建立在第一篇文章中構建的 Notes 應用程式,同時還 將介紹這種技術與 Domino 的不同。本文的目的是為 Domino 開發人員簡要介紹如何可以使用 J2EE 採用一種 不同的方法來開發一個類似的 Amazon Web Service 應用程式。本文假設您是一名非常有經驗的 Java 開發人 員。
首先,我們先來瞭解一下如何使用 Dreamweaver 和 JSP(JavaServer Page)來建立應用程式;這種技術 被用於最簡單的 Web 應用程式,至於原因,我們會慢慢介紹。然後,我們將介紹如何使用 EJB(Entity JavaBeans)、JavaBeans 和 Struts 來建立應用程式,這種技術通常用於更加健壯、更複雜的 Web 應用程式 。
J2EE 技術和架構
在 J2EE 世界中有很多不同的技術和架構,例如 Cocoon(XML/XSLT)、Structs、ColdFusion MX、Java Server Faces,等等,它們都是在 J2EE 平台上啟動並執行。當然,J2EE 平台允許您在運行 J2EE 的平台上使用 任何一種架構,這就為您提供了一個可以使用多種平台環境的承諾。
Domino 伺服器也可以採用混合型的 J2EE/Domino 設計,使用 Domino 表單來顯示使用者介面,使用 Java servlet 來實現對錶單的處理。這為表單處理提供了更多的靈活性,並且比純粹的 Domino 應用程式具有更好 的效能,但是很多純粹的 J2EE 開發人員可能會認為這種方式非常奇怪。
另外一種可以選擇的 Domino/J2EE 混合架構將使用一台 J2EE 伺服器(通常是 JSP,例如 Tomcat)來顯 示使用者介面,但使用 Domino 資料庫來儲存資料。這可以使用 Domino JSP 定製標籤實現,在 LDD Today 概 述“Jeff Calow on new Web technologies in Domino 6” 中對此進行了討論。另外,這種架構提供了比純 粹的 Domino 應用程式更好的效能,但是大部分開發人員使用它是為了改善控制 Web 網站的圖形化階層 的能力,因為 Domino 在自己的 Web 視圖中並沒有提供每個元素的位置。
與使用 Domino 建立的網站相比,這兩種混合技術在效能方面的改善都不是很明顯,但是它們都提供了一 種替代品,替代品需要的工作量比純 J2EE 應用程式更少;而且對於 Domino 開發人員來說,通過這種可選技 術來體驗 J2EE 技術也非常有協助。我們將在本系列的第三篇文章中介紹使用 Lotus Domino Toolkit for WebSphere Studio 來組合使用 Domino/J2EE 技術的方法,以及如何使用此工具為 Notes 資料庫中儲存的 Amazon 書籍資料開發一個 Web UI。
什麼是 J2EE?
J2EE 是一組標準的技術和 API 集,Sun Microsystems 將其定義為一台 J2EE 伺服器成為相容伺服器之前 必須具備的一些需求。與 Web 開發前景有關的一些技術是 servlet、JSP、JavaBeans 和 EJB。
對於簡單的 Web 應用程式來說,您可以使用 servlet 和 JSP。servlet 和 JSP 都受到 Apache Jakarta 項目的 Tomcat 引擎的支援。servlet 和 JSP 的效率比 Notes/Domino 代理高,因為它們只有在首次使用時 才需要載入;相比較而言,Java 代理在每次調用時都會重新進行載入,因此它們佔用的 CPU 處理時間更多。 從 JSP 版本 1.1 開始,增加了 JSP 定製標籤,您並不需要在其中編寫 JSP 中的代碼邏輯,因此您可以純粹 將 JSP 作為一個展示層。
EJB 通常都是與 J2EE 應用程式相關的。它們提供了一種封裝資料庫訪問和商務邏輯的方法,這樣就可以 在多台伺服器上實現分發了。在正確完成處理之後,資料庫訪問被隱藏到了商務邏輯對象之後,因此,那些使 用 JSP 的 Web 網站的開發人員並不知道如何組織資料庫。
J2EE 強大功能的來源之一是它可以將一個層次劃分為多個單獨的伺服器。雖然 Domino 可以運行資料庫、 業務和 Web 服務器上的所有表示/UI 層,但 J2EE 可以將這三部分劃分到不同的伺服器上。另外,每個部分 都可以使用叢集,這樣就可以在層次層級上具有一些冗餘。雖然您可以對 Domino 伺服器採用叢集,但是您並 不能非常精準或深入地進行這種聚集,因此一個精確定義的 J2EE 應用程式天生就比一個類似的 Domino 應用 程式範圍更加廣泛,因為您可以將其擴充到多台機器上。缺點是這種技術的開發成本更高並且更複雜。
使用 RDBMS 資料庫
正如大部分 Domino 開發人員所知道的那樣,將很多個欄位放到一個表單中可以定義一個 Domino 資料庫 。這種設計非常簡單(也就是說,表單和視圖的設計並不需要一個正式的設計過程),也可以使用一個正式的 過程進行設計;您可以任意添加欄位,尤其是將某些欄位從單值更改為多值。欄位的大小並不需要提前指定, 不過您必須要知道欄位大小的限定值。在建立表單之後,就可以用視圖來簡單地顯示這些欄位,其中包括那些 多重值欄位。
在 RDBMS(關聯式資料庫管理系統)中,在最初的資料庫設計上您需要更多的努力,因為修改表的結構是非 常痛苦的一件事情,主要是因為所有的外鍵連結和欄位大小都必須提前聲明。在某些情況中,您還需要刪除表 以及表中的所有資料,修改資料庫的設計,然後重新載入資料。
需要對多重值欄位進行更深入的討論。您通常會將一個 Domino 文檔映射為 RDBMS 表中的一行資料。Domino 文檔中的每個欄位可以映射成為該表中的一列。然而,一個表中的每一列(也就是每個欄位)都只能儲存一個 值。在一個 RDBMS 中,您需要單獨建立一個具有兩列的表。一列使用一個外鍵連結到表單上(表中的一行) 。另外一列連結到另外一個表上,其中列出了這個多重值欄位所有可能的值。