Эффективное развертывание нескольких экземпляров одной и той же WAR (разных контекстов, одного контейнера)

У меня есть один WAR (app.war )и один контейнер (Tomcat, Jetty, Glassfish, что угодно ). Моя цель — развернуть по запросу сотни экземпляров одного и того же веб-приложения в контейнере.

http://foo/app1 --> app.war
http://foo/app2 --> app.war
http://foo/app3 --> app.war 
...
http://foo/appN --> app.war

Несколько очевидных способов добиться этого.:

  • В Tomcat создайте один файл context.xml для каждого приложения (с именем appN.xml ), все указывающие на один и тот же файл WAR. Другие контейнеры имеют аналогичные методы
    • Проблема с этим подходом.:Он взорвет WAR N раз, занимая много места на диске.
  • Используйте символические ссылки для создания папок webapp/{app1,app2,appN}, указывающих на развернутую версию приложения..война. Это предотвратит взрыв дискового пространства, но JVM по-прежнему загружает в память множество повторяющихся JAR-файлов
  • . Используйте какую-нибудь общую папку lib для хранения большинства JAR-файлов (и комбинацию двух предыдущих вариантов ).

Интересно, есть ли лучший способ сделать это?. В идеале создание нового экземпляра не должно занимать НИКАКОГО больше места на диске (, кроме маргинальных файлов конфигурации ), а занимать только память, связанную со стеками выполнения потоков и другими распределениями времени выполнения.

Есть идеи?

11
задан Aldo Bucchi 17 April 2012 в 03:05
поделиться