Я настраиваю сервер разработки для команды, с которой работаю. Они разрабатывают приложения JavaEE, которые развертываются и запускаются как файлы WAR. Им неизбежно потребуется постоянно запускать один или два экземпляра своего приложения на этом сервере.
Существует ряд других приложений Java, которые также необходимо запускать на сервере, включая Jenkins, Artifactory и некоторые другие внутренние инструменты, развернутые как WAR.
Jenkins и Artifactory по умолчанию запускаются в собственном контейнере сервлетов, и настроить их таким образом очень просто. Мне приходит в голову, что можно добиться некоторой экономии памяти и производительности, если запустить все WAR в одном экземпляре, например. Tomcat, а не Winstone для Jenkins, Jetty для Artifactory и Tomcat для внутренних инструментов.
Увидим ли мы значительные преимущества от использования одного контейнера сервлетов?
Есть некоторое преимущество использования памяти для запуска нескольких WAR в одной JVM, но, с другой стороны, у вас будет больше конфликтов и возможных больших пауз полного GC с одной большой JVM. Некоторые приложения JVM, такие как Jenkins, могут потреблять очень много памяти, что может повлиять на ваше решение.
В качестве ориентировочного руководства я бы сделал следующее: