Плагин OSGi удаляется после перезагрузки
Я создал 3 различных плагина OSGI (разработанных как проект Eclipse Plugin), работающих внутри Eclipse Kura на Raspberry PI. Два плагина ведут себя как библиотека, обеспечивающая классическое использование общего. Третий плагин - это сервис, связывающийся с последовательным портом с использованием механизмов, предоставляемых Kura. Последний был разработан, как описано на начальных страницах Kura. Два подключаемых модуля библиотеки являются основными проектами подключаемых модулей.
Все решено и запущено правильно и, кажется, работает как положено, так что ничего особенного в этом нет. Проблемы возникают при перезагрузке PI, что также приводит к перезапуску ядра OSGI. Кажется, что два библиотечных плагина удаляются при перезагрузке. Служба последовательной связи все еще присутствует, но не запускается из-за отсутствия зависимостей.
Мой вопрос: что вызывает удаление плагинов при перезагрузке и как это предотвратить? Спасибо за чтение этого поста!
2 ответа
Я предлагаю вам экспортировать ваши пакеты как пакет развертывания OSGi.
Затем скопируйте DP в свой Pi и скажите Kura загрузить его при запуске.
Я написал пример проекта, который вы можете использовать для создания пакета развертывания с помощью Maven, или вы можете упаковать свои пакеты с помощью скрипта bash.
После упаковки скопируйте свой DP в папку / opt / eclipse / kura / kura / packages /. Затем отредактируйте файл /opt/eclipse/kura/kura/dpa.properties и добавьте строку для своего DP
yourbundles=file\:/opt/eclipse/kura/kura/packages/your-bundles.dp
Это официальная документация Куры о том, как это сделать.
Альтернативой может быть установка DP с использованием веб-интерфейса Kura или облачного хранилища DEPLOY.
Как вы указали в своем разъяснении, install
Команда используется для добавления пакетов зависимостей. OSGi обычно постоянна, так что если вы устанавливаете пакеты каким-либо образом (в том числе с install
команда) они все еще будут присутствовать и в том же состоянии, когда вы в следующий раз запустите OSGi.
Чтобы это работало, в OSGi есть папка "storage". Это настраивается путем настройки org.osgi.framework.storage
свойство, которое в Equinox по умолчанию ./configuration
, Возможно, ваш модуль запуска очищает этот каталог, в результате чего OSGi теряет свое постоянное состояние.
Есть два возможных решения:
- Не очищайте папку хранения OSGi.
- Настройте приложение запуска так, чтобы оно всегда включало все необходимые вам пакеты.
Я бы порекомендовал сделать оба. OSGi должен быть настойчивым; но также не очень удобно требовать от пользователя печатать install
команды для того, чтобы приложение работало.