2013-04-10 7 views
1

Я использую Jetty 8 для запуска некоторых сервлетов. У меня есть два (или более) приложения, которые используют исходный код, и я хочу запускать их на одном и том же порту (т. Е. 8080). Я поместил два различных файла WAR в Jetty, one.war и two.war, так что я к ним доступ на, например,Один JVM за приложение WAR in Jetty?

  • http://localhost:8080/one
  • http://localhost:8080/two

Оба ВОЙН содержат идентичный файл общий JAR (общие утилиты). Имеет ли каждое приложение WAR свою собственную JVM? На самом деле, я просто хочу быть уверенным, что общие классы JAR полностью разделены, поскольку некоторые из классов являются статическими, и мне нужно, чтобы два приложения явно не предоставляли доступ к одному и тому же статическому классу.

Это кажется очевидным, и я, похоже, подтвердил, что обычные классы загружаются отдельно для каждой WAR с помощью простого тестового сценария (две идентичные WAR, размещенные в одном экземпляре Jetty, но с разными путями. выше). Но мне не хватает письменной документации или подтверждения, что это так.

ответ

3

Каждый файл WAR будет иметь свой собственный загрузчик классов, см. http://docs.codehaus.org/display/JETTY/Classloading. Таким образом, вы можете безопасно использовать статические классы.

+1

Yup, это стандартное поведение Servlet Container, все совместимые контейнеры сервлетов Java будут изолировать webapps в своем собственном загрузчике классов. У вас могут быть разные войны с разными уровнями поддержки сервлета-api. –

+1

Текущая ссылка для документации: http://www.eclipse.org/jetty/documentation/current/jetty-classloading.html –

Смежные вопросы