У меня есть одна WAR (app.war) и один контейнер (Tomcat, Jetty, Glassfish, что угодно). Моя цель - развернуть по запросу сотни экземпляров этого же веб-приложения на контейнере.Эффективное развертывание нескольких экземпляров одной и той же WAR (разные контексты, один и тот же контейнер)
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} папки указывая на взорванную версию app.war. Это предотвращает взрыв на диске, но JVM по-прежнему загружает много дубликатов JAR в память.
- Используйте некоторую папку с общим доступом, чтобы содержать большинство банок (и комбинацию из двух предыдущих опций).
Интересно, есть ли лучший способ для этого. В идеале, создание нового экземпляра не должно занимать больше места на диске (кроме крайних файлов конфигурации) и обрабатывать только память, связанную со стеками выполнения потоков и другими распределениями времени выполнения.
Любые идеи?
Вы считаете переписку приложения как многозадачного приложения? Если есть 100 экземпляров точно такой же WAR и кода, я бы подумал о разработке только 1 WAR, которая будет развернута в корневом контексте? – beny23
@ beny23 Подробное объяснение могло бы помочь мне и с некоторыми вещами, над которыми я работаю. Любой шанс вы можете предоставить? –
Я отправил ответ ниже, но если вы скажете нам, почему вы хотите это сделать, я мог бы опубликовать лучший. – ccleve