Hi,
ich erklär mal kurz mein Problem. Ich arbeite mit OSGi, ich habe 3 Bundles, Bundle A, InterfaceBundle B und Bundle C.
Bundle A ruft eine Methode auf InterfaceBundle B auf, diese Methode ist in Bundle C implementiert.
Durch ein externes/Nicht- Java Programm wird das OSGi und meine Bundles neu gestartet (d.h. das externe Programm kann man antriggern, derart, dass dieses in einem Repo nachschauen soll ob eine neue Version verfügbar ist).
Bundle A bietet einen ServerSocket an zu dem man sich verbinden kann und Methoden auf Bundle A aufrufen kann. Methoden vom Bundle A rufen Methoden vom InterfaceBundle B auf.
Wenn ich das ganze System neu starte, funktioniert alles einwandfrei, Wenn aber das externe Progrmm das ganze System startet, dann kann ich eine Methode in Bundle A aufrufen. Bundle A hat sich über einen ServiceTracker von der OSGi Service Registry auch eine Referenz von Bundle C geholt (Refernz zeigt also auf das Object).
Wenn ich jetzt Methoden von Bundle A aufrufe (dann wird wieoben erwähnt eineMethode von Bundle B bzw. Bundle C aufgerufen) werden die Methoden von Bundle C nicht aufgerufen, ich bekomme auch keine Exception oder sonst irgendwas - es passiert gar nichts - In Bundle A werden alle Logs und Sysouts noch ausgegeben vor
bundleBReference.methode(),
nach dieser Zeile passiert aber nichts mehr.
Jetzt ist mir klar dass der Sachverhalt ein bisschen kompliziert ist aber vielleicht hat jemand irgendeinen Ansatz warum das so ist.
Ich bin mit meinem Latein ehrlich gesagt am Ende - ich kann mir nur erklären dass es an der OSGi Service- Registry liegt.
Wäre dankbar für brauchbare Rückmeldungen.
Besten Dank.
Poller
ich erklär mal kurz mein Problem. Ich arbeite mit OSGi, ich habe 3 Bundles, Bundle A, InterfaceBundle B und Bundle C.
Bundle A ruft eine Methode auf InterfaceBundle B auf, diese Methode ist in Bundle C implementiert.
Durch ein externes/Nicht- Java Programm wird das OSGi und meine Bundles neu gestartet (d.h. das externe Programm kann man antriggern, derart, dass dieses in einem Repo nachschauen soll ob eine neue Version verfügbar ist).
Bundle A bietet einen ServerSocket an zu dem man sich verbinden kann und Methoden auf Bundle A aufrufen kann. Methoden vom Bundle A rufen Methoden vom InterfaceBundle B auf.
Wenn ich das ganze System neu starte, funktioniert alles einwandfrei, Wenn aber das externe Progrmm das ganze System startet, dann kann ich eine Methode in Bundle A aufrufen. Bundle A hat sich über einen ServiceTracker von der OSGi Service Registry auch eine Referenz von Bundle C geholt (Refernz zeigt also auf das Object).
Wenn ich jetzt Methoden von Bundle A aufrufe (dann wird wieoben erwähnt eineMethode von Bundle B bzw. Bundle C aufgerufen) werden die Methoden von Bundle C nicht aufgerufen, ich bekomme auch keine Exception oder sonst irgendwas - es passiert gar nichts - In Bundle A werden alle Logs und Sysouts noch ausgegeben vor
bundleBReference.methode(),
nach dieser Zeile passiert aber nichts mehr.
Jetzt ist mir klar dass der Sachverhalt ein bisschen kompliziert ist aber vielleicht hat jemand irgendeinen Ansatz warum das so ist.
Ich bin mit meinem Latein ehrlich gesagt am Ende - ich kann mir nur erklären dass es an der OSGi Service- Registry liegt.
Wäre dankbar für brauchbare Rückmeldungen.
Besten Dank.
Poller
Zuletzt bearbeitet von einem Moderator: