Развертывание нескольких war-файлов (или ear-файлов в случае полноценного сервера приложений Java EE) было идеей, которая когда-то была обещанием, но на практике не очень удалась.
Основная проблема заключается в том, что, несмотря на значительные достижения, горячая перезагрузка WAR EAR остается проблематичной. Утечки памяти, утечки ресурсов, проблемы загрузчика классов ... они продолжают происходить. Таким образом, самый безопасный способ повторного развертывания - перезапустить весь контейнер сервлета или сервер приложений, но при этом удаляются все другие приложения, работающие на нем.
Вторая проблема с развертыванием нескольких приложений в одной AS состоит в том, что они представляют собой лишь тонкий слой изоляции между ними. Приложения могут получать доступ к ресурсам в JNDI из других приложений. Это может не быть проблемой для взаимодействующих приложений, но на самом деле это проблема для приложений, которые могут быть враждебны друг другу.
Как правило, контейнер сервлета не является заменой многозадачной изолированной операционной системы.
С доступностью недорогих и эффективных продуктов для виртуализации, таких как Xen, представляется более подходящим вариантом иметь только одно приложение на контейнер сервлета (в действительности, связывать их) и развертывать их на клиенте Xen.
Дополнительным преимуществом этого является то, что он обеспечивает более простой путь обновления библиотек, от которых зависит ваше приложение. Если вы рассматриваете фиксированную установку Tomcat 6 в качестве платформы развертывания, то одно приложение не может просто обновить Servlet 3.0 с Tomcat 7, поскольку это повлияет на все другие приложения, работающие на том же Tomcat. Это еще более важно для полных стеков Java EE, таких как JBoss AS, так как эти пакеты содержат больше библиотек.
На практике это часто означает, что с фиксированным Tomcat, который запускает несколько приложений, вы просто никогда не сможете обновить свое приложение, чтобы воспользоваться преимуществами более новых библиотек / API, предлагаемых Tomcat, поскольку всегда есть какое-то другое приложение, которое по тем или иным причинам не может быть обновлено. Это очень быстро превращается в полный кошмар.