2012-06-14 33 views
0

在android中,有一種機制確保只有一個類的實例可用於整個應用程序。這可以通過從應用程序派生該類來完成。

可以在servlet中做一些類似的事情嗎?我想在應用程序部署時初始化一個類。這個類應該只有一個實例。這樣所有的servlet都可以訪問它。
我開始知道可以將數據存儲在servlet上下文的散列映射中。但我不想這樣做。我想用自己的職能編寫自己的班級。這應該怎麼做?創建一個整個應用程序可訪問的類

回答

4

我想你以後只是一個singleton

這最好通過定義一個具有單個實例的枚舉來實現。 (請注意,枚舉讓你有成員函數一樣類。)

public enum YourSingleton { 

    INSTANCE; 

    // Your methods... 

} 

,然後你訪問它

YourSingleton.INSTANCE 
+0

這可能的作品,是的,因爲一個Web應用程序幾乎肯定都在一個'ClassLoader'內。使用'ServletContext'有點乾淨,並且有機會能夠跨羣集實例共享對象,這可能是可取的。 –

4

因此,創建要與自身職能無論什麼階級或任何你喜歡,並在啓動時將其放入ServletContext。您可以使用ServletContextListener來初始化並刪除它。這是什麼限制?

+0

一旦服務器關閉,對象是否會被序列化。我希望能夠繼續以前狀態的對象。 – Ashwin

+0

不,但你可以輕鬆地堅持和恢復自己在這個聆聽者。 –

1

使用singleton pattern,所以第一次調用實例方法(比如YourClass.getInstance())將創建該實例並在整個應用程序中重用。

+2

在Java中,單例最好使用枚舉實現。 – aioobe

+0

剛剛看到您的重播和+1。 –

相關問題