Как инфраструктура OSGi устанавливает идентификатор пакета? - PullRequest
6 голосов
/ 23 сентября 2011

Я пытаюсь запустить OSGi Framework (Equinox) в основном методе.Каждый раз, когда я запускаю фреймворк, когда я печатаю BundleContext.getBundles().length, он говорит, что на фреймворке установлен только 1 комплект (это, безусловно, комплектация системы).Когда я установлю свой первый пакет, идентификатор пакета будет продолжаться с последнего сеанса.скажем, если у меня было 4 пакета в прошлом сеансе (и я остановил и удалил все из них перед остановкой системного пакета), первый идентификатор пакета был установлен 5. Теперь я хочу знать, как платформа выбирает идентификатор пакета?Почему и как фреймворк запоминает последний сеанс, хотя я удалил все пакеты?Это из-за Bundle Cache?И если это так, как я могу очистить кеш (чтобы перезапустить нумерацию с 1)?

Ответы [ 2 ]

6 голосов
/ 23 сентября 2011

Фреймворк имеет последний использованный идентификатор пакета где-то в постоянном хранилище, которым он управляет.То, на что похож этот магазин, является деталью реализации фреймворка.При запуске фреймворка вы можете указать свойство конфигурации фреймворка org.osgi.framework.storage.clean.Это удалит все установленные пакеты, но я не уверен, сбросит ли он последний использованный идентификатор пакета.

2 голосов
/ 23 сентября 2011

Удаление папки equinox/org.eclipse.osgi сбрасывает нумерацию.Перед удалением убедитесь, что в ваших пакетах нет важных данных в этой папке.

Команда bundle с допустимым идентификатором пакета может показать абсолютный путь к папке equinox/org.eclipse.osgi:

osgi> bundle 7
slf4j.api_1.6.1 [7]
  Id=7, Status=ACTIVE      Data Root=D:\temp\test\equinox\org.eclipse.osgi\bundles\7\data
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...