本文轉自 IBM developerWorks 中國網站
EJB 體系結構的歷史和目標 本文概述 Enterprise JavaBeans (EJB) 技術,旨在讓讀者快速理解基本概念。第 1 部分講述 EJB 技術的歷史和某些目標、優點和技術。為了簡潔明了,有選擇地講述EJB 技術的一些要害要素。請注重,雖然 EJB 組件依靠於一些基礎的 Java 服務(如 Java Transaction Service),但使用 EJB 組件及熟悉這些組件的好處並不需要把握這些相關技術的知識。
Enterprise JavaBeans 技術自 1998 年 3 月問世以來很受好評。下面這段話就是一個例子:
“自從兩年多以前問世以來,Enterprise JavaBeanstm 技術在平台供給商和企業的開發小組中,同樣都保持著空前的發展勢頭。這是因為 EJBTm 的服務器端組件模型簡化了中間件組件的開發,這些中間組件都是事務性的、可伸縮的和可移植的。Enterprise JavaBeans 服務器通過為中間件服務(如事務處理、安全性、數據庫連接及其他)提供自動支持,降低了開發中間件的復雜程度。”(Sun Microsystems 網站)
Enterprise JavaBeans 這一名稱利用了 Java bean — 這種可移植、可重用的 Java 軟件組件的聲望。Enterprise JavaBeans 技術把 Java 組件的概念從客戶機域擴展到了服務器域:這是 Java 技術成長過程中有重大意義的一步,它使 Java 技術發展成為一種強健的、可伸縮的環境,能夠支持以任務為要害的企業信息系統。
服務器上的 Java 應用程序 Java 編程語言最初在 Web 開發人員中獲得好評的一個原因是,它支持稱為 applet 的可下載 Java 程序。對 Applet 的支持以 Applet 類的形式內置到了 1.0 版的 Java Development Kit (JDK) 中。按照 1.0 版的時間框架,Java 開發是以 applet 和應用程序作為中心的。基於 JDK 1.0 版的 Java 讀物都是從 applet 和應用程序的角度來描述 Java 編程的:
“Java 程序由更多的類定義中的某一個組成,每個類定義均已編譯成它自已的 Java 虛擬機對象代碼的 .class 文件。這些類之一必須定義一個叫做 main() 的方法,程序就是從這個方法開始運行的。想調用一個 Java 程序,需要運行 Java 解釋器 java,並指定包含 main() 方法的類的名稱。請注重 Java applet 並不是一個應用程序 — 它是一個由已在運行的 Java 應用程序(如 Web 浏覽器或 applet 查看器)裝入並運行的 Java 類。”(見 Flanagan 所著的 Java in a Nutshell)
Java 應用程序可以在服務器上運行,但是不管是在客戶機-服務器環境下,還是在基於 Web 的環境下,JDK 中都沒有提供讓 Java 應用程序專用於服務器機器的接口或包。熟悉到 Java 在 Web 環境下作為一種服務器語言的潛力,Sun Microsystems 編寫了 Java Servlet 規范。servlet 在許多方面與 applet 相似,它是專門為在 Web 服務器機器上運行而設計的 Java 程序:
“servlet 是由容器治理的 Web 組件,可產生動態內容。servlet 是一種小型的、與平台無關的 Java 類,被編譯成體系結構中立的字節代碼,這種代碼可以動態地加載到一個 web 服務器上,並由此 web 服務器運行。servlet 通過一種由 servlet 容器實現的請求-響應模型與 Web 客戶機進行交互。這種請求-響應模型建立在超文本傳輸協議 (HTTP) 行為的基礎之上。”(見 JavaSoft 的“Java Servlet API Specification”)
在一台 Web 服務器控制下,在多台服務器上運行若干小型用戶程序,這種想法並不新鮮 — 一段時間以來,公共網關接口 (CGI) 程序(常被稱為 CGI 腳本)一直起著這種作用,並推動了 Web 的普及。但 Java servlet 可以以更高的效率和可移植性來實現這一目的,因而可望最終會取代 CGI 程序。為 servlet 提供運行時環境的軟件(通常被稱為 servlet 引擎)可以添加到現有的、本身並不支持 Java 可執行程序的 Web 服務器上。
Java servlet 的出現,為應用程序員使用 Java 來創建 Web 應用程序開辟了新的途徑。但是,僅有 servlet 還不能為真正的企業計算提供完整的模型。CGI 應用程序本身往往不是完整的應用程序,在處理接收自 Web 浏覽器上用戶的信息請求時,CGI 只是整個處理過程中的一個中間步驟。例如,CGI 應用程序的一種常見用途是訪問數據庫。將它用於這種任務時,CGI 程序提供一種方法,將用戶的數據請求連接到能滿足這種請求的企業數據庫。CGI 程序經常充當一種中間軟件,從 Web 浏覽器接收請求,決定必須調用哪些計算資源來滿足這些請求,並向浏覽器發回響應。Java servlet 與 CGI 程序一樣,最適合充當連接前端 Web 請求與後端數據資源的中間層組件。進入討論組討論。