является ли bndtools будущим пакетом инструментов для OSGI bundle?

#java #osgi #osgi-bundle #apache-felix #bndtools

#java #osgi #osgi-bundle #apache-felix #bndtools

Вопрос:

Я видел, что есть какое-то сообщество osgi.enroute , equinox и etc поощряют bndtools для osgi bundle. Однако есть много специальных ключей, которые я никогда не видел и не могу найти на их официальном сайте. Например,

 Require-Capability:
    osgi.service;filter:="blahblahblah";effective:=active
Provide-Capability: osgi.service;objectClass=net....
  

И иногда делают что-то вроде

 META-Persistence:
Webcontext-path: 
  

Хорошо, откуда эта документация? Кто, черт возьми, знает, если при таком размещении он будет автоматически искать? Что означает, что я ставлю JDBC-Driver , тогда он будет искать?

Есть ли у них какие-либо шпаргалки или документы bndtool, которые могут ссылаться на все это.

Насколько я знаю, плагин maven felix помог нам красиво объединить частный экспорт и импорт. Зачем я хочу перейти на bndtools?

И я вижу, что apache karaf (популярная среда выполнения OSGI) все еще использует плагин felix maven, который более понятен и понятен.

Является ли это причиной того, что OSGI до сих пор остается менее популярным, чем другие JAVA-фреймворки? Могу ли я по-прежнему придерживаться пакета плагинов maven Felix вместо использования этих сложных инструментов?

Ответ №1:

В новейших примерах enroute используется сборка maven. Таким образом, они не сильно отличаются от сборок apache karaf. Для создания пакетов с maven у вас есть два варианта. Maven-bundle-plugin (от felix) и bnd-maven-plugin от сообщества bnd.

Оба используют bnd под капотом, поэтому у них есть только небольшие различия. bnd-maven-plugin использует bnd.bnd по умолчанию для конфигурации. maven-bundle-plugin также может использовать этот стиль конфигурации. Я вижу тенденцию, что многие проекты используют bnd-maven-plugin, поскольку он более актуален для версий bnd, но вы можете использовать оба.

Реальные различия связаны с созданием артефакта развертывания. В bndtools вы создаете jar из файла bndrun, в то время как в karaf вы обычно создаете файл функций. Здесь вам действительно нужно решить, каким путем вы идете. Если вы используете автономный jar для своего приложения, то bndtools — отличный выбор. Если вы планируете развертывание в karaf, то функции karaf — лучший выбор.

Кстати. В обоих случаях плагин bndtools для eclipse обеспечивает некоторую хорошую поддержку. Особенно хорошо поддерживается просмотр манифеста jars и поддержка редактирования файлов bnd.bnd.

Что касается конфигураций, необходимых в файле bnd.bnd. Эти конфигурации необходимы таким же образом, если вы используете felix maven-bundle-plugin.

Хорошей новостью является то, что если вы используете новейшие спецификации / примеры, вам редко приходится касаться bnd.bnd или конфигурации плагина в maven. Есть аннотации практически для каждой необходимой конфигурации. Внутри самих спецификаций OSGi есть хорошая документация, но самый простой подход — начать с примеров.

Комментарии:

1. Приятно знать, что функция karaf и плагин maven bundle все еще поддерживаются, поскольку я предпочитал придерживаться хорошо известных вспомогательных инструментов 🙂 Однако, есть ли у вас какие-либо ссылки на документы о том, как работает пакет аннотаций OSGI?

2. Здесь много полезной информации, но было бы очень полезно, если бы вы предоставили ссылки на документ или примеры в своем ответе.

3. У меня есть пример ниже. Он также содержит некоторые дополнительные ссылки на ресурсы: github.com/cschneider/osgi-best-practices

4. @ChristianSchneider Как вы сгенерировали github.com/cschneider/osgi-best-practices/blob /… и github.com/cschneider/osgi-best-practices/blob/… Где находится ваша инструкция по экспорту и импорту пакета?

5. Вы используете плагин bndtools eclipse для создания требований. По большей части это просто означает перетаскивание пакетов верхнего уровня из представления репозитория слева в требования справа. Затем пакеты выполнения создаются с помощью разрешения (либо в пользовательском интерфейсе, либо через сборку maven). Экспорт пакетов создается с использованием аннотаций на github.com/cschneider/osgi-best-practices/blob/master/backend/… Импорт определяется автоматически с помощью bnd-maven-plugin.