程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 靈活使用EJB的本地和遠程接口(一)

靈活使用EJB的本地和遠程接口(一)

編輯:關於JAVA

引言

隨著 EJB 2.0 規范的出現,Enterprise Java Bean 可以有本地接口、遠程接口,或同時有兩種接口,這給 J2EE 開發人員和架構師提供了非常大的靈活性。實現兩種接口給予 Bean 客戶端和 Bean 本身在開發場景方面的自由。取決於客戶端與 EJB 的相對位置,可以設置訪問 Bean 的邏輯的最佳方式。本地接口提供對 EJB 的優化訪問(如果客戶端和 Bean 位於同一 Java 虛擬機(Java Virtual Machine,JVM)中),而遠程接口可以用於分布式體系結構。在單個應用程序中組合這兩種類型的接口來支持兩種訪問 Bean 的方式有助於減少設計約束。

通過使某些事情具體化來權衡設計決策的利弊是非常有意義的,這樣的事情可以是測試結果、案例研究,最好是方法和工具而不要僅僅是請求和響應。本文力圖提供更多的關於使用 EJB 的本地和遠程接口的信息(基於樣本 J2EE 應用程序)。通過使用 WebSphere Studio Application Developer 的開發和測試環境,我們將實現兩種 J2EE 應用程序體系結構的拓撲,運行應用程序,並且借助於簡單的 Java HTTP 客戶端對應用程序進行測試來獲取與性能有關的反應和數據以供考慮。

J2EE 應用程序的體系結構選擇

一般來說,最簡單的拓撲是 J2EE 應用程序中的每個組成部分都在同一 WebSphere Application Server、同一 JVM、同一節點或機器中。在這樣的情況下,WebSphere Application Server 提供 Servlet 容器和 EJB 容器(圖 1)。這種遍及全文的拓撲(我們將省略防火牆、負載平衡器和轉換器等等)稱為“All-in-One”拓撲。

圖 1. 簡單的 J2EE 應用程序拓撲:All-in-One

這是 WebSphere Studio Application Developer Version 5.1(以下稱為 Application Developer)中的 WebSphere Test Environment(WTE)的缺省拓撲。然而,這樣的拓撲可以作為站點體系結構的一部分成功地用於生產環境。隨著 EJB 2.0 規范的出現,可以使用 J2EE 應用程序的任何 Java 組件中本地接口來與同一 EJB 容器中的 EJB 進行通信。

有時,需要分離 Servlet 和 EJB 容器,比如出於應用程序安全性考慮。應用程序架構師或開發人員可以選擇把 Servlet 容器放在不同的節點上,因而使 J2EE 應用程序拓撲更加復雜(如圖 2 所示),我們稱這種拓撲為“分離容器(Separate Containers)”拓撲。事實上,WebSphere Application Server 可以用作高效 Servlet 容器和 EJB 容器,但是為了使事情更容易區分,我們在此包含了 Tomcat Application Server 和 Servlet 容器。

 

 

圖 2. 拓撲:分離容器(Separate Containers)

在分離容器(Separate Containers)拓撲中,J2EE 應用程序的 Web 部件與 EJB 通信的惟一方法是通過遠程接口(一般是通過 Internet Inter-Orb Protocol(IIOP))。(在本文中,我們不討論 Web 或 HTTP 服務器的分離,因為它不是我們關注的要點)。

部署體系結構的決策在 J2EE 應用程序的開發過程中發生改變。因此,開發人員可能想利用 EJB 的遠程和本地接口的優勢來避免損失靈活性。有可能開發一種 J2EE 應用程序,它將適應任何合理的部署拓撲而不用更改一行源代碼,惟一需要進行的更改也許就是部署描述符設置,這可以大大節省開發人員的時間。比較本地接口與遠程接口的使用性能也是非常有意義的。稍後,我們將創建一個樣本 J2EE 應用程序,它將使我們能夠通過設置 EJB 的環境參數來方便地從使用本地接口轉換到使用遠程接口。對於 All-in-One 拓撲,我們將通過控制方式使用本地或遠程接口來測試樣本應用程序,並且分別稱它們為“All-in-One-All-Local”和“All-in-One-All-Remote”。

構件和先決條件

接下來的部分將描述創建一個可靈活部署、多層、分布式 J2EE 應用程序(名為“Dual”)的開發和部署過程,這個應用程序將演示兩種接口的使用。結果包括:

1.三個 J2EE 應用程序(EAR 模塊),用於已描述的部署場景。

2.Java 模塊,包含一個 Java Bean。

3.兩個 J2EE EJB 模塊:

.無狀態會話 EJB

容器管理的實體 EJB(CMP)

4.J2EE Web 應用程序(WAR 模塊),包含:

一個 Servlet

一個 JSP 頁面

一個 HTML 頁面

5.數據源(映射到 DB2 數據庫)。

6.兩個測試服務器,每個實現:

WebSphere Test Environment(WTE)

Tomcat Test Environment

這個應用程序采用標准的模型-視圖-控制器(Model-View-Controller)體系結構(MVC,“Model 2”),其中,Servlet 用作控制器,而 JSP 用作表示組件。為了使事情更接近於現實生活,還使用了 Data Transfer Object(DTO)或 Value Object(VO)設計模式。Servlet DualServlet 與會話 Bean DualSession 交互,而會話 Bean DualSession 又與實體 Bean DualEntity 交互。實體 Bean 與數據源(包括表 PERSON 在內)交互。VO 是由可序列化 Java 類 Person 表示的。該對象用作會話 Bean 的方法的返回值以及 JSP 頁面的 Java Bean。

下載 ZIP 文件包含完整的 EAR 模塊和本文所用的代碼清單。通過這些現成的解決方案,您可以簡單地創建數據庫表和服務器項目,然後輕松地運行、調試和測試應用程序。下載的內容還包括一個簡單的 Java HTTP 多線程測試客戶端來幫助進行性能測試。

在實際場景中,圖 1 和 2 展示的每個組件都將駐留在分離的節點(機器)中。出於本文的目的,我們將把每個組件(包括持久性存儲在內)放在同一機器中,在單個開發人員的工作台上運行每個組件。由於本配置只是出於教育的目的,它仍將不限定可靈活部署的應用程序的特征。應用程序的每個主要的組件都可以部署到分離的節點中而不用進行代碼更改,采取的方式是將相對主機名提供給客戶端、Web 和 EJB 組件以及 JDBC 驅動程序。

為了完成本文中的步驟,您必須在工作台上安裝如下應用程序:

DB2 V8.1(數據庫)

WebSphere Studio Application Developer Version 5.1(集成開發和測試環境)

Tomcat 4.1.29(Servlet 容器);請在此下載。

下面幾個部分將描述開發 Dual J2EE 應用程序的主要步驟。為了本練習的成功,必須完全遵循命名約定。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved