Я имею дело с системой, которая запускает приложение Java для каждого клиента в своей собственной JVM. У нас есть около полутора десятков выделенных серверов, которые теперь работают почти на 100 JVM, и наборы пользовательских сценариев для управления этими JVM. Эта настройка действительно показывает свой возраст на данный момент: управление тем, что многие JVM становятся кошмаром для мониторинга/управления, и мы постоянно занимаемся проблемами кучи. Мы хотели бы перейти к более современному подходу и просто запустить множество приложений на одном сервере приложений на физическую машину. Однако сохранение отдельных приложений имеет определенные преимущества с точки зрения изоляции (например, из-за ошибок памяти влияет только на одного клиента). Каждый стек программного обеспечения клиента имеет требования к памяти, которые сильно различаются.
Мой вопрос: есть ли способ иметь лучшее из обоих миров здесь и запускать несколько приложений на одном JVM (сервере приложений) и поддерживать некоторый уровень изоляции? Или это просто современный жизненный факт, который вам нужно для управления требованиями к памяти набора приложений в наши дни? Существуют ли другие решения помимо сервера приложений или контейнера Java EE (например, Wildfly или Spring), которые мне здесь не хватает? Кажется, что эта система - это прорыв от другой эры!