3 Stimmen

Wie kann ich einen Dienst in OSGi (Apache Felix) registrieren?

Ich habe es erfolgreich geschafft, Apache Felix aus dem Code zu starten und ein eigenes Bundle zu registrieren.

Folgende Beziehung zwischen OSGI-Projekten ist erforderlich:

[OsgiInterface] -- bietet Schnittstellen.

[OsgiModuleA] -- (Bündel) bietet eine Implementierung dieser Schnittstellen.
kennt [OsgiInterface]

[OsgiUsage] -- macht von einem oder mehreren Bündeln Gebrauch.
kennt [OsgiInterface] y [OsgiModuleA]

Jetzt habe ich Probleme, einen Dienst zu registrieren, der eine Schnittstelle implementiert. Ich würde vermuten, dass meine Einträge in manifest.mf Dateien sind falsch.

Zusätzliche Informationen

Es wäre sehr nett, wenn sich jemand den Code in meinem vorherige Frage

Lassen Sie mich auf diese Frage eingehen:

Ich habe versucht, eine dritte Projekt OsgiSchnittstellen die eine Schnittstelle bietet SomeInterface im Paket interfaces . Dieses Projekt ist sowohl unter OsgiModuleA y OsgiUsage .

OsgiModuleA: manifest.mf hat jetzt einen zusätzlichen Wert interfaces für den Eintrag Import-Package: . Außerdem gibt es eine Instanz von SomeInterface die dem Aktivator zur Verfügung gestellt werden.

Wenn das Bundle gestartet wird, wird ein NoClassDefFoundError auftritt: die Schnittstelle SomeInterface ist nicht bekannt.

EDITAR:

Jetzt, wo der Fehler behoben ist, kann ich sagen, dass der wichtigste Teil war:

map.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA,
    "my.interfaces; version=1.0.0");

Ohne dies habe ich ClassCastException .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X