OSGi フレームワークを使用するモジュラー アプリケーションがあります。ここでは、org.eclipse.equinox.common_3.4.0 OSGi コンテナーを使用しています。これで、アプリケーションはすべての osgi バンドルがインストールされてアクティブになった状態で既に実行されており、いくつかのアクションに基づいてハッシュ マップをループすることで、アクティブな OSGi バンドルをすべて UI に表示しています。ここでの要件は、アプリケーションが既に実行されている間に、ファイル システムから新しい OSGi バンドルをインストールすることです。この新しいバンドルをアプリケーションの OSGi コンテナーに渡して、このバンドルが開始されるようにします。
どうすればこれを達成できますか? OSGi バンドルを JarInputstream として読み取り、バンドル アクティベーターの完全修飾クラス パスを読み取り、Class.forName("") を使用してこれをインスタンス化し、BundleActivator インターフェイスに型をキャストしようとしました。しかし、それを開始している間、バンドルコンテキストを start メソッドの引数として取っています。
OSGi バンドルをコンテナに実用的に提供して、バンドルのインストールと開始を処理し、UI がこの新しいバンドル名をディスプレイに自動的に表示する方法はありますか?