java:将枚举注入应用程序范围

时间:2014-09-04 21:44:47

标签: java jsp enums jstl

我有一个枚举,我注入了应用程序范围,如

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 个答案:

答案 0 :(得分:1)

这两个部署不会共享相同的enum - 除非您明确地在它们之间共享对象,否则它们将保持独立。

原因是enum只对加载它的类加载器是唯一的 - 它不是唯一的JVM范围。 Web服务器为每个上下文提供自己的类加载器。

请参阅here了解您希望如何分享。