2014-07-23 43 views
0

我是Java EE的新手,我有一個任務要做但不知道如何去做。 我需要創建一個將在應用程序上作用域的管理bean。每次我們啓動應用程序時,bean都需要從數據庫加載數據列表。 因此,根據我在網上的研究,我需要:創建受管理的bean應用程序作用域以加載應用程序啓動

  1. 創建一個託管Bean。
  2. 將bean名稱添加到faces-config作爲應用程序作用域bean。
  3. 在bean上,添加所有的方法來加載數據。

那麼如何在應用程序啓動時設置加載?然後如何從應用程序的任何位置獲取這些加載的數據?

+0

[EJB3?:正確的做法時,應用程序啓動喜歡的Grails引導插入初始數據]的可能重複(http://stackoverflow.com/questions/24725062/ejb3-right-way-to-insert-initial -data-when-application-starts-like-grails-boots) – perissf

+0

您確定要使用託管bean,而不是說可擴展性更高的緩存解決方案(如EHCache)嗎? http://ehcache.org/ – Gimby

+0

與你一樣,我不會使用託管bean,但我不負責任何技術解決方案...... –

回答

2

自JSF 2.x以來,這很容易,只需將屬性eager添加到@ManagedBean註釋。

@ApplicationScoped 
@ManagedBean(eager=true) 
public class InitializerBean { 

    @PostConstruct 
    public void init() { 
     //init your DB here 
    } 

} 
+0

謝謝你的回答。我把這個eager屬性放在了faces-config中的託管bean的定義上。然後我想看看它是否有效,所以我把一個信息記錄器放在Init方法中,但是當我啓動應用程序時什麼也沒有顯示,這是正常的嗎? –

+0

這取決於您的記錄器的設置。還有,「啓動應用程序」是什麼意思?這個bean將在第一次訪問某個JSF頁面時創建,而不是在應用程序部署期間創建。 –

+0

這可能是一個原因,你使用'javax.faces.bean'包嗎? –

相關問題