Плагин 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 теряет свое постоянное состояние.

Есть два возможных решения:

  1. Не очищайте папку хранения OSGi.
  2. Настройте приложение запуска так, чтобы оно всегда включало все необходимые вам пакеты.

Я бы порекомендовал сделать оба. OSGi должен быть настойчивым; но также не очень удобно требовать от пользователя печатать install команды для того, чтобы приложение работало.

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