Как OSGIfy библиотеки

Я работаю над проектом, это интеграционный проект, мы используем Apache Camel и Apache Karaf. В проекте мне нужно использовать Jira REST Java клиентская библиотека.

поэтому я прочитал довольно много различных статей и тем о том, как обернуть библиотеку без OSGI в OSGi bundle, но я действительно не уверен, что правильно понял.

Итак, я создал файл POM с зависимостью от необходимой библиотеки. Сделал пакет и попытался развернуть его в Karaf, of конечно, Караф жаловался на пропажу пакетов.

Итак, я нашел соответствующую зависимость maven, добавил ее, пакет переходит в <Import-Package> и зависимостей в <Embed-Dependency>.

еще один раунд, развертывание, найти зависимость, добавить,... и снова, и снова, пока Караф не успокоится.

это действительно так? Это кажется мне довольно сумасшедшим, поэтому я думаю, что я не получил его как обычно:)

наконец, пакет получить стабильный, который был на моем рабочем компьютере, Я быстро проверил его и пошел домой, там я продолжил, Но, как ни странно, тот же POM / пакет, скомпилированный на моем персональном компьютере, не работает, снова жалуясь на отсутствующий пакет, но на этот раз этот пакет наверняка находится в файле POM и наверняка он встроен в пакет, я вижу его там.

этот отсутствующий пакет на этот раз org.апаш.палата общин.кодек.

org.osgi.framework.BundleException: Unresolved constraint in bundle jiraclient.bundle [134]: Unable to     resolve 134.0: missing requirement [134.0] osgi.wiring.package; (osgi.wiring.package=org.apache.commons.codec)
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)[org.apache.felix.framework-4.0.3.jar:]
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1868)[org.apache.felix.framework-4.0.3.jar:]
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944)[org.apache.felix.framework-4.0.3.jar:]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1247)[6:org.apache.felix.fileinstall:3.2.6]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1219)[6:org.apache.felix.fileinstall:3.2.6]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1208)[6:org.apache.felix.fileinstall:3.2.6]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:503)[6:org.apache.felix.fileinstall:3.2.6]
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:291)[6:org.apache.felix.fileinstall:3.2.6]

Итак, теперь я совершенно запутался, что не так: (

- пожалуйста, ребята, помогите мне. Спасибо!

файл POM длинный, поэтому я думаю, что ссылка лучше:http://pastebin.com/j5cmWveG

1 ответов


да OSGi-это IMHO "далеко не простой в использовании" с точки зрения его модели развертывания, требующей 100% пакетов с метаданными osgi в манифесте.MF файлов. И Вам нужна кандидатская степень по математике, чтобы понять инструмент BND. И, к сожалению, многие банки не являются пакетами OSGi.

глядя на вашу пом.xml-файл со всеми импортами / экспортами и этот синтаксис" нелегко понять "займет всего 5 секунд для любого среднего инженера, чтобы понять, что это" что-то написано в государстве Дания" ; например, на основе OSGi != мир в котором мы живем. Это должно быть проще, ИМХО.

вы можете установить простую банку в Карафе, используя wrap обработчик URL-адресов : http://karaf.apache.org/manual/latest/developers-guide/creating-bundles.html

еще один трюк-создать uber JAR, например, чтобы поместить все это в один файл JAR, а затем вы можете развернуть его.

есть еще FAB (пакеты предохранителей), что делает развертывание OSGi проще, поскольку он обрабатывает большую часть этого сумасшествия для вас во время развертывания, а не вам приходится иметь дело с манифестом OSGi.MF madness:http://www.davsclaus.com/2012/08/osgi-deployment-made-easy-with-fab.html