OSGI встраивает пакет в контейнер Karaf вместо отдельных модулей? - PullRequest
0 голосов
/ 25 мая 2018

Я использую экосистему OSGI / Karaf.Первоначально я вставлял одну и ту же банку в две разные связки.Тот факт, что эти два пакета совместно используют данные, используя классы из этого встроенного jar, я получаю исключения приведения классов.Предполагается, что это связано с тем, что встраиваются два разных экземпляра одного и того же банка.(Classloader вопрос?).

Моя идея состоит в том, чтобы просто установить это в контейнер и использовать его в комплекте.У меня две проблемы: во-первых, этот jar-файл не является пакетом, во-вторых, проблема .. Я нашел версию этого jar-пакета с сервисным миксом и получаю следующую ошибку:

org.osgi.framework.BundleException: не найдено собственных предложений кода в значении Bundle-NativeCode: *

1 Ответ

0 голосов
/ 25 мая 2018

Прежде всего, если два пакета используют одну и ту же «зависимость», объявите эти зависимости через Import-Package вместо встраивания jar.Во-вторых, если вы хотите, чтобы список пакетов был установлен за один раз, используйте функции, которые предоставляет Apache Karaf.См. Документацию здесь или простой пример:

<feature name="my-project" version="1.0.0">
  <feature>other</feature>
  <bundle start-level="80" start="false">mvn:com.mycompany.myproject/myproject-dao</bundle>
  <bundle start-level="85" start="false">mvn:com.mycompany.myproject/myproject-service</bundle>
</feature>

Другой способ - просто установить сам пакет зависимостей с помощью:

bundle:install mvn:com.mycompany.myproject/myproject-dao
...