簡介
J2EE 模組是 J2EE 應用程式中最小的獨立部署單元。 J2EE 模組有各種類型,請參閱 概 念:J2EE 概觀。
J2EE 模組的數目和大小影響 J2EE 應用程式部署和測試的難易度。也會影響元件在其他應用程式中重複使用的難易度,以及系統適應其他部署配置的能力。
如需組合 J2EE 模組的相關資訊,請參閱準則:組合 J2EE 模組。
如需部署 J2EE 模組的相關資訊,請參閱 準則:部署 J2EE 模組和應用程式。
指出 J2EE 模組
J2EE 模組是在整合時才建立,但會反映實作時(以及實際設計時)所做的決策。J2EE 模組通常用來包裝實作子系統,而這些子系統通常又對映至工作成果:設計子系統。
J2EE 模組應該包含密切相關的 EJB 及僅供這些 EJB 專用的 Helper
類別。通常是在設計時找出這些關係,且這些類別會組合起來放入「設計子系統」中。尋找「設計子系統」時應該已考量重複使用性、更換性及支援多重部署配置等問題。不過,在分配模組來部署到特定節點時,可能會浮現出設計的缺點,且可能需要變更「設計子系統」(及/或「實作子系統」)。
指出 J2EE 模組來包含以單一儲存區為目標的元件。Web 元件包裝在 Web 模組中,EJB 元件包裝在 EJB 模組中,「應用程式用戶端」元件包裝在「應用程式用戶端」模組中。
由多個模組使用的一般 Java 類別應該包裝在分開的 J2EE 模組中。產生的 JAR 檔案會出現需要這些檔案的模組的類別路徑參照中(或這些類別路徑參照的遞移範圍內)。
總之,在指出 J2EE 模組時,一開始請為每一個「實作子系統」指出一個模組,除非子系統包含要部署到不同儲存區的元件,然後再為每一個儲存區定義個別的模組。
建模 J2EE 模組
J2EE 模組在實作模型中以 UML
構件表示,並設定可代表類型的模板:<<EJB-JAR>>、<<JAR>> 或 <<WAR>>。
元件(例如 EJB 或 Servlet)組合為 J2EE 模組的情形可以用圖形方式表達,從內含元件至包裝此元件的模組之間繪製 <<implements>> 相依關係,如下圖所示。也可以繪製
<<JARInclude>> 相依性來表示整個 Java 套件納入保存檔。
另一種作法是以套件來表示保存檔,並顯示套件內含的元件,如下圖所示。
除了建模哪些元件包裝到保存檔中,您也可以塑造元件的內容,這些內容最後會記錄在保存檔的部署描述子中。
以下是如何塑造一些 EJB 元件內容的範例。
上圖顯示三個 EJB、BankEJB、LoanEJB、CustomerEJB 及 LoanManagerEJB 組合為相同的模組 EJBJARArchive1。請注意 EJB
方法內容、安全角色及交易的建模。在此範例中,CustomerEJB 在 CustomerTrans 所指出的交易類型下執行(例如 "Required")。程式碼使用角色名稱 "user",此名稱對映至部署描述子中的 "Customer"
使用者角色。另外,即使發出呼叫的使用者屬於不同的角色,LoanEJB 和 CustomerEJB 中的所有方法都以 "Customer" 的認證來執行。同樣地,LoanManagerEJB 方法以 "Admin"
的身分執行。最後,BankEJB 中的使用者都不能存取方法。
以下是如何塑造一些 Web 元件內容的範例。
上圖顯示 Servlet 組合為 Web 模組。請注意,安全角色和限制的建模(「客戶」類型的使用者本身在顯示結果 Servlet 中執行方法)受制於 WebSecurityContraint1 的內容所定義的限制。
J2EE 模組至節點的部署可以在「部署模型」中顯示。如需進一步討論如何塑造模組至部署節點的對映,請參閱 準則:描述 J2EE 應用程式的分佈。
部署描述子
每一個 J2EE 模組包含一個 J2EE 標準部署描述子,加上多個廠商特有的描述子(也可能沒有)。 概念:J2EE 概觀描述各種不同的部署描述子。一般而言,標準 J2EE
部署描述子主要是捕捉設計和實作決策。廠商特有的部署描述子中捕捉 RUP 所謂的「部署決策」,例如元件在哪些節點上執行,以及如何針對特定節點來配置元件。
部署描述子有兩項不同的用途:
-
做為將設計決策傳達給儲存區的手段。例如,階段作業 EJB 的部署描述子有一個 "session-type",指出階段作業 EJB 是 Stateful 或 Stateless。這必須與設計和程式碼保持一致 -
不能只在部署描述子中變更。
-
做為調整行為的手段,不需重新編譯程式碼。例如,使用部署描述子來定義授權哪些角色呼叫特定的方法。這「可以」單獨變更,不必變更 EJB 的程式碼。
部署描述子的內容是在 J2EE 模組建立時和組合到 J2EE 應用程式時設定。如需組合 J2EE 模組的相關資訊,請參閱準則:組合 J2EE 模組。如需組合 J2EE 應用程式的相關資訊,請參閱準則:組合 J2EE 應用程式。
|