2011-06-10 54 views
0

我有一個單例,我必須在我的過濾器中實例化,出於某種原因,我無法在第一次嘗試時得到它的實例。 (部署在JBoss EAP 5.1中的應用程序)這個沒有任何修改的解決方案在Jetty應用服務器上工作得很好。非常感謝您提前回答。如何在JBoss中獲取單例的實例?

真誠,

羅馬

回答

1

如果你不希望使用任何依賴注入框架(春,吉斯),做舊的方式方法:

安裝​​

contextInitialized(ServletContextEvent sce)方法中創建你的單例並將其存儲爲屬性ServletContext

當你的過濾器將被初始化,你應該能夠得到從在FilterConfig界面中傳遞的ServletContext是單實例的過濾器的init method

1

爲什麼你需要在你的過濾器單身?您可以使用網絡應用程序,會話和請求上下文來輸入任何您希望的數據。

這就是說,沒有看到你的代碼,它可能是100%可能你正在使用類靜態變量來保存實例?如果是的話,請注意,類是由類加載器作用域的,這是爲什麼在應用服務器中使用這種習慣用法是一個壞主意的原因之一(這幾乎可以保證使用類加載器層次結構實現等等)JBoss和Jetty顯然有不同的方法。

+0

我們使用專有的依賴注入 – 2011-06-10 23:17:48