Wenn Sie die dynamischen Funktionen einer OSGi-Umgebung nicht verwenden müssen, können Sie trotzdem die starre Verbindung, das deklarative Packen und die Serviceabhängigkeiten nutzen, die das OSGi-Framework bietet.
Mit dynamischen Plug-ins können Sie ein Upgrade Ihrer Plug-ins durchführen, ohne das Grid zu stoppen. Zur Verwendung dieser Funktionalität müssen die ursprünglichen und die neuen Plug-ins kompatibel sein. Wenn Sie keine Plug-ins aktualisieren müssen oder es sich leisten können, das Grid zu stoppen, um die Plug-ins zu aktualisieren, benötigen Sie die Komplexität dynamischer Plug-ins möglicherweise nicht. Es gibt trotzdem gute Gründe für die Ausführung Ihrer Anwendung von eXtreme Scale in einer OSGi-Umgebung. Zu diesen Gründen gehören die starre Verbindung, das deklarative Packen, die Serviceabhängigkeiten usw.
Eine Problemstellung beim Hosten des Grids oder Clients in einer OSGi-Umgebung ohne dynamische Plug-ins (d. h. ohne Deklaration der Plug-ins mit OSGi-Services) ist die Art und Weise, in der das Bundle von eXtreme Scale die Plug-in-Klassen lädt. Das Bundle von eXtreme Scale stützt sich beim Laden von Plug-in-Klassen auf OSGi-Services, so dass das Bundle Objektmethoden in Klassen anderer Bundles aufrufen kann, ohne die Pakete dieser Klassen direkt zu importieren.
Wenn die Plug-ins nicht über OSGi-Services bereitgestellt werden, muss das Bundle von eXtreme Scale in der Lage sein, die Plug-in-Klassen direkt zu importieren. Anstatt das Manifest des Bundles von eXtreme Scale für den Import der Benutzerklassen und Pakete zu ändern, erstellen Sie ein Bundlefragment, das die erforderlichen Paketimporte hinzufügt. Das Fragment kann auch die Klassen für andere Nicht-Plug-in-Benutzerklassen wie Datenobjekte und Agentenklassen importieren.