Как автоматически обновить Java-приложение во время его запуска?

У меня есть приложение Java 1.6, развернутое на нескольких машинах (~ 30) и запущен как служба Windows.

Моя основная проблема касается обслуживания этих развернутых артефактов: если я разрабатываю новую версию этого приложения, я не хочу вручную передислоцировать его на каждую машину.

В идеале, когда служба Windows запускается, она проверяет удаленный сервер, если обновление существует, и если оно найдено, то оно обновляет приложение. Обратите внимание, что приемлемо, что после этого обновления услуга требуется снова перезапустить.

Этот механизм можно сравнить с проверкой моментального снимка Maven: если в удаленном репозитории существует более новая версия версии SNAPSHOT, тогда Maven загружает ее перед ее запуском. Обратите внимание, что само приложение будет развернуто в репозитории Maven (в нашем случае Nexus), поэтому проверка обновления будет выполнена против этого экземпляра Nexus.

Каковы мои технические решения для внедрения такого автоматического обновления приложения?

Не стесняйтесь спрашивать меня подробнее о технической информации или о контексте...

Спасибо.


Изменить: Как заявил Питер Лоури, я могу использовать Java Web Start. Однако, как я могу интегрировать JWS в Java-приложение, которое запускается как служба Windows?

Ответ 2

Общей методикой является использование пусковой установки. Шаги выглядят примерно так:

  • Запустите программу запуска.
  • Панель запуска проверяет, нужно ли обновлять приложение. Если да, пусковая установка обновляет приложение (я думаю, что это как "шаг обновления" ).
  • После этапа обновления запускается приложение запуска.