2009-08-24 58 views
1

我需要實現一個簡單的DAO bean,它也緩存從數據庫讀取的數據。這個DAO bean被無狀態bean使用。如何實現Singleton-like EJB3.0 bean?

因爲EJB3.0不支持singleton bean,所以實現這種DAO bean的正確方法是什麼?只使用靜態變量來保存緩存可行嗎?

我們正在使用Oracle AS,不打算使用羣集。

回答

4

以某種跨應用程序服務器方式執行此操作的「正確」方式是使用jmx mbean作爲緩存行爲。 mbeans是單身(每個應用程序服務器),可以執行線程和鎖定等操作。取決於你使用的應用程序服務器,當然,在實踐中,mbean可能或多或少地難以使用。

2

大多數應用程序服務器和JPA實現提供某種可由用戶控制的內置緩存機制。研究如何在不需要構建單例的情況下完成你想要的任務是值得的。

單身人士和J2EE的主要問題之一是在集羣環境中沒有簡單的方法來處理它們。所有這一切說,我確實發現了一個article,它提出了一些可能在JBoss下做你想做的事情的建議,併爲EJB3.1提出了一個新的@Singleton註釋,這可能是一種可能性。如果這對你有用,你應該寫下你做的這個問題的另一個答案。

+0

我們已經在使用EclipseLink緩存,但是我們有幾種情況,這是不夠的,我們必須手動實現緩存 – tputkonen 2009-08-24 13:28:05

0

如果您在Weblogic服務器上運行,實際上也可以實現也是羣集感知的單身bean。但我不相信這個功能在其他應用程序服務器上存在。