簡介
這個準則以指出 EJB 為重點。準則:Enterprise JavaBean (EJB) 提供 EJB 的其他指引
指出 EJB
EJB 通常用來實作伺服器端商業物件,這些物件需要交易、安全及遠端存取的支援,或操作共用的資料(例如更新帳戶資訊)。
通常是在工作成果:分析類別中尋找設計類別時指出 EJB。控制類別很適合做為 Session Bean,因為 Session Bean
很適合提供控制邏輯。實體類別適合做為 Entity Bean,因為 Entity Bean 很適合保存持續資料。
請參閱下列更詳細的準則:
比較階段作業、訊息驅動及 Entity Bean
總結先前提及的一些準則,下表指出不同 EJB 扮演的角色、如何存取及狀態的本質。
|
階段作業
|
訊息驅動
|
實體
|
角色
|
實作用戶端特有的商業邏輯
|
實作訊息處理特有的商業邏輯
|
實作商業實體特有的商業邏輯
|
存取方法
|
透過本端或遠端介面的單一用戶端
|
透過 JMS MessageListener 介面的儲存區;用戶端不可直接存取
|
許多同時透過本端和遠端介面的用戶端
|
狀態
|
可以保留用戶端和儲存區之間的暫時交談狀態
|
Stateless,但可以維護實例中的資源控點
|
持續狀態儲存到資料庫
|
建模 EJB
EJB 塑造為一組模板類別。尤其是 Bean 類別和任何 EJB 介面類別。根據準則:J2EE 應用程式的介面中探討的理由,EJB 介面塑造會為模板類別,不是 UML 介面。
Bean 類別和 EJB 介面之間的關係塑造為 Bean 類別至介面的相依性,而不是實現關係。Java 實作建構通常以介面和類別之間的實現來表示。不過,EJB
類別不實作介面類別,所以相依關係比較適當。下圖顯示範例。如需此特定範例的詳細資訊,請參閱準則:設計 J2EE 應用程式的子系統。
EJB 和 Helper 類別範例
以下是適用於建模 EJB 的 UML 模板。
模板
|
適用於
|
定義
|
<<EJBSessionHomeInterface>>
<<EJBEntityHomeInterface>>
|
Class
|
分別表示階段作業或實體 Home 介面。
|
<<EJBRemoteInterface>>
|
Class
|
表示 EJB 遠端介面。
|
<<EJBLocalInterface>>
|
Class
|
表示 EJB 本端介面。
|
|
|
|
<<EJBSession>>
|
Class
|
表示 EJB Session Bean 類別。
|
<<EJBEntity>>
|
Class
|
表示 EJB Entity Bean 類別。
|
<<EJBMessageDriven>>
|
Class
|
表示類別是訊息驅動 Bean。
|
EJB 通常群聚在子系統中,伴隨著關係密切的類別和 EJB。這樣可讓設計師提供 EJB 的一種無關於實作規格觀點,並配合其他設計元素來形成更高階的抽象概念。如需其他詳細資料,請參閱準則:設計 J2EE 應用程式的子系統。
如需表示 EJB 構造的完整模板清單,請參閱 UML/EJB 對映規格 (RSC01)。
塑造對於訊息驅動 Bean 所訂閱的主題或佇列的相依性。如需在 J2EE 應用程式中建模並行元素的其他指引,請參閱準則:描述 J2EE 應用程式的執行時期架構。
使用儲存區管理的持續性、交易、授權等機制,可以塑造為 Bean 類別的其他內容,或直接納入 Bean 類別相關的文字說明中。
使用序列圖來考量使用這些機制的情況。
互動圖(合作圖和序列圖)可用來顯示 EJB 的動態行為,以及非 EJB(包括 Web 元件和外部用戶端應用程式)與 EJB 的互動。
根據作業:使用案例設計的描述,這些互動圖在本質上都一樣。互動可以用 Bean 顯示為黑箱,只與 EJB
介面產生互動。互動也可能經由表達 EJB 介面和 Bean 實作類別之間的互動來顯示 Bean 實作。請注意,通常不會顯示干預儲存區的互動。
訊息驅動 Bean 會耗用從其他來源非同步抵達的訊息。您可以選擇顯示直接從生產者流向消費者的非同步訊息,或經由建模主題和佇列以更精確地塑造關係。
圖 2 顯示一個序列圖範例,示範用戶端類別和 EJB 介面的互動。
圖 2:用戶端類別和 EJB 介面的互動
圖 3 是類似圖 2 的序列圖,但顯示與 Bean 實作的互動。
圖 3:與 EJB 實作互動的範例
EJB 也可以塑造為子系統或元件,做成一組 Bean 實作類別加上 EJB 介面。
有些設計師也可能選擇將 EJB 塑造為類別,並為操作加上模板,表示操作是屬於「本端」、「遠端」或 Home 介面。這種表示法比其他替代方案更精簡。
|