1

私は、Javaリフレクションと同様に、事前にプログラムされた命令を使用して、OSGiベースのアプリケーションでOSGiバンドルを監視および管理(開始、停止、インストール、アンインストール、更新)する必要があるプロジェクトに取り組んでいます。それ自体とそのコンテキストでは、バンドルを更新または削除したり、新しいバンドルを追加(インストールおよび開始)したりできます。

たとえば、OSGiバンドルを使用して開発されたチャットアプリケーションがあります。自己管理特性を追加するには、OSGiバンドルを自律的に(人間の介入なしに、または人間の関与を最小限に抑えて)監視および管理(インストール/アンインストール、開始/停止、更新)するメカニズムが必要です。これをどのように達成できるか考えていますか?

問題を説明しようとしましたが、私の質問がわからない場合はお気軽にお問い合わせください。

PS私はOSGiEquinoxフレームワークを使用しています。

よろしく。

4

4 に答える 4

3

OSGiフレームワークにはすでにそのようなメカニズムが含まれており、最も基本的なOSGiインターフェースを使用してバンドルのライフサイクルを完全に制御できます。

OSGiバンドル内からそれを制御したい場合は、それを管理エージェントバンドルと呼びましょう。このバンドルのBundleContextを使用して次のことができます。

org.osgi.framework.BundleContext

installBundle(java.lang.String location)指定されたロケーション識別子からバンドルをインストールします。getBundles()インストールされているすべてのバンドルのリストを返します。getBundle(long id)指定された識別子を持つバンドルを返します。

Bundleオブジェクトを取得したら、名前、インポートされたパッケージなど、バンドルに関するすべてを検索できます。バンドルを開始、停止、更新します。したがって、ゼロ管理ポリシーで示されているロジックを実装できます(たとえば、エラーが発生したときにすべてのプラグインバンドルを再起動するか、適切なプラグインを検索して、新しいコンテンツをレンダリングする必要があるときにインストールするなど)。

さて、これらすべてを「外部」OSGiから実行したい場合は、管理エージェントバンドルで外部用のある種のインターフェースを公開する必要があります。1つの可能性はWebページである可能性があります(OSGiには単純な組み込みWebサーバーが含まれています。HTTPServiceを確認してください)。あなたが達成したいことに応じて、他にもたくさんあります。

お役に立てれば :)

于 2012-07-16T06:59:46.997 に答える
1

org.osgi.framework javadocを見てください。バンドルのバンドルコンテキストから、バンドルをインストールして取得できます。バンドルAPIを使用すると、バンドルを停止、開始、および更新できます。

于 2012-07-15T20:56:12.657 に答える
1

BundleListenerクラスも役立つ場合があり、バンドルの開始または停止を通知します。

于 2012-07-16T06:17:46.750 に答える
1

ApacheFelixFileInstallのソースコードを確認することをお勧めします。これはおそらく、OSGiフレームワークを完全に管理するために使用できる最も単純な「管理エージェント」です(非常に重要な構成管理者を含む)。

于 2013-07-17T06:14:51.793 に答える