Развертывание приложений 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 ваших приложений и запускать их как сервисы, это хороший способ пойти и уменьшить сложность ваших сценариев развертывания.

Похоже, вы ищете менеджер зависимостей для создания автономного исполняемого файла jar и менеджер пакетов для развертывания. Помимо инструментов, о которых вы упомянули, вы можете проверить ant+ivy для build + dependency mgmt и rpmbuild+ rpm + yum для управления пакетами в linux.

Другие вопросы по тегам