1

Eclipse の外部で実行されるヘッドレス OSGI サーバーを作成しています。Jetty をサーブレット コンテナーとして使用し、Equinox を OSGI コンテナーとして使用しています。バンドルを使用してorg.eclipse.equinox.http.jettyJetty を OSGI に追加しています。プロンプトから手動で jetty と org.eclipse.equinox.http.registry を起動すると、すべて正しく実行されosgi>ます。ただし、これを無人で実行したいので、OSGi の起動時にこれらのバンドルを自動的に (または少なくともプログラムで) ロードする必要があります。どうすればいいですか?

つまり、OSGI バンドルを自動起動するにはどうすればよいでしょうか?

4

2 に答える 2

2

別のホイールを再発明しますが、まあ。Apache Karaf がこれらすべてをどのように処理するかを見てみましょう。ところで。これは、さまざまな OSGi ランタイムの選択をサポートする OSGi コンテナです。したがって、シナリオでは、ルートバンドルをロードし、最初のバンドルセットをロードするように指示する「メイン」が必要です。Karaf の場合、初期セットは構成可能なメイン クラスによって処理されます。展開したい他のバンドルについては、Karaf には特定の「features.xml」にすべてのバンドルをインストールする機能デプロイヤがあります。これは、maven または obr リポジトリからバンドルをデプロイするよう機能サービスに指示する記述子です。

詳細については、Karaf Main classを参照してください。Karaf の詳細については、Apache Karafを参照してください。

念のため、std が見つかります。そして、あなたのニーズに合った最小限のディストリビューションです。

于 2013-06-29T20:23:08.293 に答える
1

osgi> プロンプトからバンドルをインストールすると (または、gogo を使用して開始することをお勧めします)、インストールは永続的になります。そのため、フレームワークを再起動すると、バンドルが自動的に再起動されます。

常に最初からやり直したい場合は、永続的な情報を削除できるランチャー設定がいくつかあります。OSGi コア仕様のフレームワークの起動に関するセクションを参照してください。

興味深い可能性は、bnd(tools) を使用することです。bndtools では、ファイルを使用してアプリケーションを開発、デバッグ、およびテストできbndrunます。満足したら、アプリを実行可能な JAR (java -jar myapp.jar など) にエクスポートできます。この実行可能な jar は、含まれているすべてのバンドルを含むフレームワークを自動的に開始します。

バンドルを動的に更新したい場合は、FileInstall をご覧ください。少し単純化されていますが、小規模なアプリケーション (<50 バンドル) の場合はうまく機能します。(そして、FileInstall と bndtools ランチャーを組み合わせることができます)。

于 2013-07-01T07:02:39.753 に答える