2014-09-04 58 views
1

我有我注入的應用範圍,如的java:注入枚舉到應用範圍

public void contextInitialized(ServletContextEvent sce) { 
     sce.getServletContext().setAttribute("app", ApplicationProperty.INSTANCE); 
} 

我的問題,是我必須用不同的屬性文件部署的兩倍此Web應用程序的枚舉。這會導致一個問題,因爲我使用枚舉,他們會共享相同的值?謝謝。

應用程序使用不同的上下文路徑和屬性文件(在屬性文件中認爲是secretKey = 12923,另一個具有secretKey = 48984)部署兩次。第一個實例將其部署爲/ ForInternalUse和其他部署/ ForExternalUse。這兩個部署都位於同一個Web應用程序服務器(glassfish)下。

PS。我已經對glassfish 3.1做了一個小測試,但似乎沒有共享屬性。第二次部署不影響第一次部署。

+1

您正在部署應用程序兩次,或者您有兩個應用程序正在運行,您是指通過共享(與誰)的意思? – 2014-09-04 21:46:25

+0

請參閱我對原始問題的編輯。 – user3586195 2014-09-04 22:06:23

回答

1

這兩個部署將不會共享相同的enum - 它們保持獨立,除非您專門在它們之間共享對象。

原因是enum只是加載它的類加載器唯一 - 它不是唯一的JVM範圍。 Web服務器爲每個上下文提供自己的類加載器。

請參閱here如何分享。

+0

謝謝。我的印象是JVM-Wide特有的枚舉。 – user3586195 2014-09-05 00:03:15