Apache felix не может загрузить dbcp2 как пакет

Я создал пакет OSGi, который использует apache commons dbcp2 для создания пула соединений с базой данных. Я использую apache felix gogo в качестве среды выполнения для запуска своих пакетов. Я без проблем загрузил в apache felix несколько других внешних библиотек:

Изображение здесь (не могу опубликовать репортаж): https://i.gyazo.com/c779ccaba20e3fa327d61a621748d8dc.p а>

Однако каждый раз, когда я пытаюсь запустить пакет dbcp2, который требуется в моем пакете, я получаю следующую ошибку:

Изображение здесь (не могу опубликовать репортаж): https://i.gyazo.com/ac7b673e63b9e6ad764db2e6 а>

Я обнаружил, что есть некоторый доступный пакет Apache mixservice, но он содержит dbcp 1.4, а мне нужен dbcp 2.5.0 или выше.

Что нужно сделать, чтобы apache felix смог загрузить dbcp2 как библиотеку, необходимую для других проектов?


person Dakado    schedule 06.10.2019    source источник
comment
Вместо изображения вам лучше загрузить такое сообщение об ошибке в корзину для вставки или аналогичный сервис для текстового содержимого. Это упрощает копирование его части для ссылки на ошибку в ответе.   -  person Christian Schneider    schedule 06.10.2019


Ответы (1)


В сообщении об ошибке вы видите, что для пакета dbcp требуется пакет javax.transaction версии> = 1.1.0. Это не ошибка связки. Это просто означает, что вам нужно предоставить этот пакет в контейнере OSGi.

Обычно вы устанавливаете комплект, который предоставляет этот пакет. В этом случае пакет поступает из jre, и системный пакет должен его экспортировать.

В зависимости от того, как вы запускаете felix, способ экспорта системного пакета различается. Например, если вы используете bndtools, вы делаете это в файле bndrun. См. Пример микросервиса Enroute.

Для простого феликса см. Параметр "org.osgi.framework.system.packages.extra ".

В этом примере экспортируется пакет javax.transaction (среди некоторых других).

person Christian Schneider    schedule 06.10.2019