2010-08-14 38 views
11

我是EJB 3的新手,很懷疑Google沒有提供滿意的答案。在EJB 3中使用客戶機jar和設計模式

我想創建一個框架與一些基類和一些實用的方法,我的其他應用程序可以使用。所有應用程序都將部署在同一臺服務器上。

當我試圖在eclipse中創建一個新的EJB 3.0項目時,它會詢問我是否也想創建一個客戶端jar。這個客戶端jar的用途是什麼?我的ejbmodule被添加爲EAR文件的一部分。那麼我真的需要這個客戶端jar嗎? 我是否需要創建本地和遠程接口?或者只是遠程接口會做?

我決定保留在一個叫projCommon項目的所有接口和bean定義在projApps。 bean類實現的遠程接口在projCommon中。所以projApps依賴於projCommon。

我打算使用projCommon中定義的委託方法來調用bean類。這將意味着projCommon也依賴於projApps,rt?並導致循環依賴。

EJB是如何直接注入的?

如果你可以提供一個解釋我的疑惑,那真的很有幫助。

回答

22

當我試圖在eclipse中創建一個新的EJB 3.0項目時,它會詢問我是否也想創建一個客戶端jar。這個客戶端jar服務的目的是什麼 ?

EJB客戶端JAR文件是一個可選的JAR文件,可以包含客戶端程序需要使用EJB JAR文件中包含的企業bean的客戶端視圖的所有類文件。如果您決定不創建一個客戶端JAR文件的EJB模塊,所有的客戶端接口的類將在EJB JAR文件

我的ejbModule追加爲 EAR文件的一部分。那麼我真的需要這個 客戶端jar嗎?

您並不真的需要EJB客戶端,它只是提供了一個更簡單的打包方式來使用客戶端的EJB。

是否需要創建本地和 遠程接口?或者只是遠程 接口會做?

如果您的所有EJB都在相同的EAR中,那麼您可以使用本地接口,如果不是,則需要遠程接口。本地接口更高效,呼叫完成後可以參考。
某些容器(即WebSphere)將在運行時爲您優化此容器,並在可能的情況下自動調用本地接口。

我決定把所有的接口 在一個名爲projCommon項目和projApps的 bean定義。 類實現的遠程接口位於projCommon中。 所以projApps依賴於 projCommon。

我會繼續按功能區組織我的項目。在功能區域之外進行本地呼叫,並在功能區域之外的遠程呼叫進行本地呼叫,這樣可以稍後拆分要部署在不同服務器上的功能以進行擴展。它還使代碼更加模塊化。這也避免了任何循環依賴。

EJB的直接注入方式是 ?

它是如何工作並不重要,這將由容器完成。 J2EE的全部內容是抽象出如何。

http://www.developer.com/print.php/3650661

EJB容器3提供的設施,注入各類資源爲無狀態會話Bean。通常,爲了執行用戶任務或處理來自客戶端應用程序的請求,會話bean中的業務方法需要一種或多種類型的資源。這些資源可以是其他會話Bean,數據源或消息隊列。

是無狀態會話Bean正在嘗試使用的資源可以使用註釋或部署描述符注入。資源可以通過註釋實例變量或設置方法的註釋來獲取。

0

詳情請參閱here。希望這個幫助。