Потратив пару часов на то, чтобы понять, как заставить непрерывное развертывание работать в случае OSGi -приложения , я, наконец, задаю свой первый вопрос о stackoverflow, надеясь, для некоторых указаний на то, что я мог сделать неправильно или пропустить -почему-то я чувствую, что нахожусь на ложном пути...
Вот чего я хочу добиться:
собрать несколько пакетов и установить их в репозиторий maven (здесь нет проблем, используя bnd)
теперь, когда все пакеты, составляющие мое приложение (, проходят все тесты и т. д. ), я хочу развернуть и запустить приложение, то есть запустить некоторую инфраструктуру OSGi, используя эти пакеты.
Запуск не является проблемой -"mvn pax :provision -Dframework=equinox" делает свое дело. Мое приложение запускается причалом, поэтому его легко проверить через браузер, чтобы убедиться, что все в порядке (в дополнение ко всем тестам)
Но теперь, пытаясь быть "непрерывным" , в следующий раз, когда я захочу применить эту процедуру, мне действительно следует сначала закрыть работающий экземпляр моего приложения (освобождение хотя бы используемого порта ). Итак, чтобы перезапустить все, мне каким-то образом нужно сначала закрыть старую установку.
И здесь начинается мой вопрос :Помогает ли мне что-нибудь в этом? Я понимаю, что есть плагин maven -deploy -, но это кажется полезным только при развертывании некоторого файла WAR/EAR в какой-либо стандартный контейнер приложения (без необходимости перезапуска. ).
Мне действительно нужно только запустить какой-нибудь скрипт, чтобы запустить среду OSGi -, а затем, в следующий раз, чтобы корректно закрыть ее , прежде чем я запущу ее снова. Для tomcat, jetty, jboss и т.п. есть некоторые сценарии shutdown.sh или инструкции mvn jetty :stop , но действительно ли мне нужно самому писать такие сценарии? ? Вот где я думаю, что начинаю идти по неправильному пути, у кого-то, должно быть, были эти проблемы до меня, и я думаю, что они решили их;)
Я понял, что могу каким-то образом попытаться использовать JMX или использовать консоль telnet для доступа к работающему экземпляру, чтобы выполнить команду «стоп 0», но это кажется неправильным .
Процессы, запущенные из jenkins, должны компилировать/создавать/развертывать проекты, но не запускать длинные -запущенные потоки, я думаю, поэтому мне каким-то образом нужно запустить какой-то процесс «снаружи», который я хочу сначала убить в следующий раз, когда я попробую это снова.
Любые идеи? Может быть, я что-то упускаю? Заранее спасибо за любой вклад в это!