我有一个枚举,我注入到应用程序范围内,例如
public void contextInitialized(ServletContextEvent sce) {
sce.getServletContext().setAttribute("app", ApplicationProperty.INSTANCE);
}
我的问题是,我必须使用不同的属性文件两次部署此Web应用程序。自从我使用枚举后,这会引起问题吗,它们会共享相同的值吗?谢谢。
应用程序使用不同的上下文路径和属性文件部署了两次(例如,secretKey = 12923,而另一个在属性文件中具有secretKey = 48984)。第一个实例将其部署为/ ForInternalUse,另一个实例将其部署为/ ForExternalUse。两种部署都在同一个Web应用程序服务器(glassfish)下。
PS。我已经对glassfish 3.1做了一个小测试,但是似乎属性没有共享。第二次部署不影响第一个部署。
最佳答案
这两个部署不会共享相同的enum
-除非您明确共享它们之间的对象,否则它们将保持独立。
原因是enum
仅对于加载它的类加载器是唯一的-在JVM范围内不是唯一的。 Web服务器为每个上下文提供了自己的类加载器。
有关您是否希望共享的信息,请参见here。
关于java - java:将枚举注入(inject)应用程序范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25675458/