Fremde Packages in OSGi Framework

Drysek

Grünschnabel
Hallo Leute,

ich möchte eine komplette Anwendung auf OSGi umstellen. Diese
verwendet natürlich einige 3PartyLibraries, wie z.B. Jena.2.4, Axis, Protege, uvm.

Ich bin ein absoluter Neuling was OSGi aneht und nutze das Equinox Framework.
Ich habe jetzt angefangen wichtige Funktionen aus meiner Anwendung in Bundles
auszulagern, die Ihrerseits aber natürlich auf Funktionen der genannten 3PartyLibraries
zu greifen.

Dadurch lässt sich so ein Bundle anscheinend nicht im Equinox Framework aktivieren, da
es diese Funktionen nicht kennt, bzw. diese auch nicht als Export-Package im Manifest der jeweiligen Bibliothek makiert sind. Das Problem, ist das dadurch Abhängigkeiten beliebiger Tiefe, also Bibo1 nutzt Funktionen aus Bibo2 usw. Müsste ich alle diese Abhängigkeiten vorher erkennen und die jeweiligen Pakete im jeweiligen Manifest als Exported eintragen und dann ins Framework laden oder gibts da noch bessere Ansätze

Ich hoffe ich konnte mein Problem einigermaßer verständlich darstellen ;)

Gruß

Drysek
 
Hi,

in wie weit lassen sich Funktions aus Java 2SE in OSGi einsetzen !

Gibts da irgendwelche Einschränkungen !!

Gruß

Drysek
 
Hallo,

wenn ein Bundle Thirdparthy Jars verwendet die auch potentiell von einem anderen Bundle verwendet werden könnten, dann geht man in der Praxis so vor, dass man entweder alle Thirdparty Bilbiotheken in einem "Library-Bundle" auslagert oder für jede Thirdparty-Lib ein eigens Bundle anlegt (es gibt natürlich auch je nach Anwendungsfall Mischformen).
Solch ein Library jar kappselt nun alle ThirdParty jars und exportiert die relevanten packages. Die Bundles die Klassen aus diesem Library-Bundle verwenden wollen müssen davon abhängig gemacht werden. Außerdem muss man dann noch die entsprechenden Packages importieren.

in wie weit lassen sich Funktions aus Java 2SE in OSGi einsetzen !
Gibts da irgendwelche Einschränkungen !!
Da gibts IMHO keine Einschränkungen.

Gruß Tom
 
Hi noch mal Frage !

Wenn ich aus OSGi Klassen Jar Files heraus nutzen möchte, die nicht OSGi konform
entwickelt wurden. Das heißt ohne BundleActivator und ohne die benötigten Funktionen unter OSGi zu registrieren. Nehmen wir z.B. eine x-beliebige utility Klasse für irgendwas die man irgendwan mal für eine reine Java Anwendung geschrieben hat. Können die Funktionen dieser Klassen dann problemlos aus OSGi heraus aufgerufen werden, indem man einfach die benötigten Funktionen bzw. deren Klassen als Export-Package im Manifest File deklariert? Oder muss man wirklich für jedes Jar deren Klassen man benutzen möchte einen BundleActivator schreiben und mit diesem dann zu erst die benötigten Funktionen im Framework registrieren ? Das wäre dann natürlich bei solchen Paketen wie z.B. der Jena API unmöglich, da dort schlichtweg der SourceCode fehlt !!

Ein schnelles ja das geht indem man das so und so macht, oder nein das geht überhaupt nicht, wäre mir sehr wichtig !

Gruß

Drysek
 
Also ich hab hier ein einziges Bundle, zu dem zig Jar-Files gehören. Das Bundle hat einfach einen leeren Aktivator (bzw. leere Start-/Stop-Methoden), weil ich brauch das Bundle ja nicht, sondern nur die Jar-Files. Der Bundle-Classpath steht auf allen Jar-Files und exportiert wird im Manifest-File alles, was ich irgendwo anders brauchen könnte. Also ich würde mal sagen: Ja, das geht :) Unschön ist halt nur, dass man natürlich alle Packages exportieren muss (und nicht die jar-files), so dass das eine LANGE Liste ist :)
 
Zurück