Развертывание приложений Java Server, которые не являются.wars
Существуют ли какие-либо хорошо интегрированные стеки управления приложениями, которые позволяют создавать, развертывать и обновлять не.war
Java-приложения, которые работают как серверы? Например, потребители сообщений, которые являются серверами (но не веб-серверами и не имеют сервлетов) или исполняемыми файлами .jar
с Джетти встроен?
Сборка и развертывание .war
Это довольно просто: у Maven есть военный архетип, у Jenkins - куча плагинов для развертывания. .war
файлы на различные серверы приложений, большинство из которых поддерживают загрузку новых веб-приложений во время выполнения. Такие инструменты, как Elastic Beanstalk, делают этот процесс еще проще, связывая управление серверными средами.
В отличие от развертывания исполняемого файла .jar
Кажется, заново изобретаем колесо. Нужно выбрать лучший способ закрасить зависимости и создать исполняемый артефакт с множеством плагинов Maven, поместить этот артефакт куда-нибудь, а затем найти способ его установки на целевые серверы и замены / обновления при необходимости (пакеты Debian). был бы один из способов сделать это).
Все это кажется мне очень "ручным", и кажется, что выгодно развертывать приложения как .war
с серверами приложений, даже если они не подходят для такой среды, просто так вы получите преимущество от поддержки инструментов.
2 ответа
Вы можете реализовать это, развернув свои приложения в контейнере osgi.
Вы можете подключиться к жизненному циклу osgi, чтобы запустить ваше приложение при запуске пакета osgi. Затем вы можете удаленно запускать и останавливать контейнер (если контейнер поддерживает это).
Ваши приложения могут определять свои зависимости как часть osgi-манифеста, но при использовании maven затенение фляг с использованием плагина shade несложно, и я думаю, что будет проще управлять, чем иметь дело с сотнями фишек в вашем контейнере.
Этот вопрос говорит о непрерывном развертывании пакетов osgi с использованием jenkins.
Альтернативным (и более стандартным) способом было бы написание сценариев, которые автоматизируют развертывание - возможно, с использованием специально созданных инструментов, таких как puppet или chef. Существует плагин maven для кукол, который позволяет извлекать артефакты из репозитория maven для использования в ваших скриптах кукол.
Запуск puppet или Chef от jenkins является тривиальным, и, если вы хотите, вы можете предоставить доступ к сборкам развертывания нетехническим сотрудникам, чтобы позволить им развертывать новые сборки в среде одним нажатием кнопки.
Например, @bagheera предлагает создать rpms ваших приложений и запускать их как сервисы, это хороший способ пойти и уменьшить сложность ваших сценариев развертывания.