Помимо использования традиционных серверов приложений, которые на самом деле не такие тяжелые, вы можете попробовать различный аромат Java EE, называемый микроконтейнерами.
Java EE - это всего лишь набор стандартов. Стандартные результаты в спецификации API, и каждый из них может свободно выполнять спецификацию. Сервер приложений (AS) - это, в основном, тонко настроенная коллекция этой функции. Эти API не были воплощены в жизнь без причины. Они представляют собой функции, обычно используемые в проектах. Сервер приложений можно рассматривать как «кураторский набор» этих функций. Такой подход имеет много преимуществ - у AS много пользователей, поэтому он хорошо тестируется с течением времени. Проводка функциональных возможностей может привести к ошибкам.
Как бы то ни было, наступил новый век, где с помощью Docker приложение выполняет свои зависимости с ним. Потребность в полномасштабном сервере приложений со всеми функциональными возможностями, готовыми для обслуживания приложений, во многих случаях больше не требуется. В прошлом сервер приложений точно не знал, какие службы потребуют развернутые приложения. Таким образом, все было в комплекте. Некоторые из более инновационных AS, таких как WildFly, создавали экземпляр только необходимых услуг. Кроме того, существуют профили Java EE, которые немного упростили сервер приложений монолита.
В настоящее время мы обычно отправляем приложение вместе с его зависимостями (JDK, libraries, AS) внутри Docker - или мы туда направляемся. Поэтому попытка собрать точно правильное количество является логичным выбором. Но, и это «большой, но», потребность в функциональности AS по-прежнему актуальна. По-прежнему хорошей идеей является разработка общей функциональности на основе стандартов и общих усилий. Похоже, что это уже не вариант распространения его как одного большого пакета, потенциально оставляющего большинство API неактивными. Эта работа имеет много имен, будь то микроконтейнеры, uberjar создатели ...
Есть сервер Java EE так свет сомнительно, чтобы использовать что-нибудь остальное. * Spring Boot не основан на Java EE и в конфигурации по умолчанию, приведенной в руководстве Getting Started, Tomcat используется внутри.
Ключевым моментом является то, ваше приложение Java EE должна быть разработана в качестве самостоятельного приложения Java EE. Обертывание его «достаточной» функциональностью делегируется на эти микро решения. Это, по крайней мере, по моему скромному мнению, правильный путь. Таким образом, вы сохраните совместимость как с полноразмерными AS, так и с микрорешениями. Uber-jar, содержащий все зависимости, может быть создан во время или после процесса сборки.
WildFly Swarm или Payara Micro могут «сканировать» приложение, выполняя только необходимые сервисы.Для реального приложения объем памяти в производстве может составлять всего 100 МБ - для реального приложения. Это, вероятно, то, что вы хотите. Spring Boot может делать похожие вещи, если вам нужна Spring. Однако, по моему опыту, Spring Boot - much more heavyweight и голодная память, чем современная Java EE, потому что она, очевидно, имеет Spring внутри, поэтому, если вы используете seeking lightweigtness с точки зрения потребления памяти, попробуйте Java EE, особенно WildFly Swarm (или чистый WildFly) и Payara Микро. Это мои любимые AS, и они могут быть действительно, очень маленькими. Я бы сказал, что WildFly Swarm намного проще начать, Payara micro требует больше чтения, но предлагает интересную функциональность. Оба могут работать как обертка - вы можете просто обернуть свой текущий проект ими после фазы сборки, не нужно ничего менять.
Payara Micro even provides Docker images готовый к использованию! Как вы можете видеть, Java EE является зрелым и готовым к заселению Земли Докера :)
Одним из очень хороших и надежных ресурсов является Адам Бьен, например, в его Java EE micro/nanoservices video. Взгляни.
Возможно, может быть помощь http://wildfly-swarm.io например https://github.com/wildfly-swarm/wildfly-swarm-examples/tree/master/docker/docker-jaxrs –