我有一个枚举,我注入了应用程序范围,如
public void contextInitialized(ServletContextEvent sce) {
sce.getServletContext().setAttribute("app", ApplicationProperty.INSTANCE);
}
我的问题是,我必须使用不同的属性文件两次部署此Web应用程序。这会导致问题,因为我使用枚举,它们会共享相同的值吗?感谢。
应用程序使用不同的上下文路径和属性文件进行两次部署(假设为secretKey = 12923,另一个在属性文件中具有secretKey = 48984)。第一个实例将其部署为/ ForInternalUse和其他部署/ ForExternalUse。这两个部署都在同一个Web应用服务器(glassfish)下。
PS。我在glassfish 3.1上做了一个小测试,但看起来属性并不共享。第二次部署不会影响第一次部署。
答案 0 :(得分:1)
这两个部署不会共享相同的enum
- 除非您明确地在它们之间共享对象,否则它们将保持独立。
原因是enum
只对加载它的类加载器是唯一的 - 它不是唯一的JVM范围。 Web服务器为每个上下文提供自己的类加载器。
请参阅here了解您希望如何分享。