Java: внедрение enum в область приложения

1

У меня есть перечисление, которое я ввожу в область применения, например

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

Мой вопрос: мне нужно развернуть это веб-приложение дважды с разными файлами свойств. Это вызовет проблему, так как я использую перечисление, будут ли они иметь одни и те же значения? Благодарю.

Приложение развертывается дважды с различными путями контекста и файлами свойств (думайте как secretKey = 12923, а другое имеет secretKey = 48984 в файле свойств). Первый экземпляр развертывает его как /ForInternalUse и другое развертывание /ForExternalUse. Оба развертывания находятся под одним и тем же сервером веб-приложений (Glassfish).

PS. Я сделал небольшой тест на стеклянную рыбку 3.1, но, похоже, свойства не разделяются. Второе развертывание не влияет на первое развертывание.

  • 1
    вы развертываете свое приложение дважды или у вас запущено 2 экземпляра приложения, и что вы подразумеваете под общим (с кем)?
  • 0
    см. мои правки к первоначальному вопросу.
Теги:
jsp
enums
jstl

1 ответ

1
Лучший ответ

Эти два развертывания не будут иметь одного и того же enum - они сохраняются отдельно, если вы специально не разделяете объекты между ними.

Причина в том, что enum уникально только для загрузчика классов, который загружает его - он не является уникальным JVM-wide. Веб-серверы предоставляют каждому контексту свой собственный загрузчик классов.

См. Здесь, как, если вы хотите поделиться.

  • 0
    Благодарю. У меня сложилось впечатление, что enum уникален для JVM-Wide.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню