2013-05-16 34 views
1

在我的web應用程序中,我有一個由幾個jsf-viewscoped和一些requestcoped bean組成的表示層。通常我只想在這些表現邏輯中,所以只要有超出表示邏輯的任務,我就使用另一個Bean或一個EJB。所以在一些viewcoped Beans中,我注入了一個EJB。我現在的問題如下:我是否應避免通過創建另一個(例如應用程序作用域)bean來將EJB直接注入用於表示的Bean中的情況,該Bean只將方法調用委派給相應的EJB? 並且:何時注入的EJB已初始化?如果它在初始化bean的時候被初始化了,那麼這意味着對於我的應用程序的每個訪問者,總是有一個EJB保留的?我不認爲這是事實,但EJB只在調用其中一個方法時才使用。但是,我應該如何正確分離業務層和表示層?將EJB注入到viewcoped Bean中有害嗎?

回答

2

將EJB注入到視圖範圍的支持bean中是很常見的,也是最佳實踐。

(視圖範圍的)backing bean負責處理與視圖有關的任何問題,並委託EJB bean進行業務邏輯。

通常(但不一定)視圖bean從EJB bean的PostConstruct中加載數據,然後在回發過程中保留這些數據。這對於性能和一致性來說可能是非常人性化的。

+0

啊好,所以我覺得我在那裏出了點問題。那麼可以說,viewscoped bean不屬於表示層,而是屬於應用層?表示層將由jsf頁面組成? – nico1510

+2

是的,表示層只包含Facelets。檢查[瞭解JSF作爲MVC框架](http://stackoverflow.com/questions/10111387/understanding-jsf-as-a-mvc-framework)。問候, –

+0

序列化呢?當我在像這樣的viewcoped bean中注入一個EJB時,我得到序列化錯誤... – salihcenap