Jak OSGIfy biblioteki
Pracuję nad projektem, który jest projektem integracyjnym, używamy Apache Camel i Apache Karaf. W projekcie muszę użyćBiblioteka klienta JEST REST Java.
Przeczytałem więc sporo różnych artykułów i wątków na temat zawijania biblioteki nie-OSGI do pakietu OSGI, ale naprawdę nie jestem pewien, czy dobrze to zrobiłem.
Stworzyłem więc plik POM z zależnością od potrzebnej biblioteki. Zrobiłem pakiet i próbowałem go wdrożyć, oczywiście, Karafowi, Karaf skarżył się na brakujące pakiety.
Więc znalazłem odpowiednią zależność maven, dodałem ją, pakiet trafia<Import-Package>
i zależność w<Embed-Dependency>
.
Kolejna runda, wdrożenie, znalezienie zależności, dodanie ... i jeszcze raz, aż Karaf będzie w porządku z pakietem.
Czy to naprawdę prawda? Wydaje mi się to całkiem szalone, więc chyba nie mam tego jak zwykle :)
W końcu pakiet dotarł do stabilnego, który był na moim komputerze roboczym, sprawdziłem go szybko i poszedłem do domu, tam kontynuowałem, ale dziwny, ten sam POM / pakiet skompilowany na moim komputerze osobistym nie działa, ponownie narzekając na brakujący pakiet, ale tym razem ten pakiet jest na pewno w pliku POM i na pewno jest osadzony w pakiecie, widzę go tam.
Ten brakujący pakiet jest tym razem org.apache.commons.codec.
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]
Więc teraz jestem całkowicie zmieszany, co jest nie tak :(
Bardzo proszę, chłopaki, pomóżcie mi. Dzięki!
Plik POM jest długi, więc myślę, że link jest lepszy:http://pastebin.com/j5cmWveG