誰かがosgiフレームワーククラスの使用方法の例を教えてもらえますか?私はそれらのクラスを使用する方法の手がかりを持っていません...
BR、
マーカス
これは、使用しているOSGi実装によって異なります。私はEclipseEquinoxを使用し、通常のJavaクラス内からフレームワークを開始します。Eclipse jar(org.eclipse.osgi_longversion.jarと呼ばれる)には、org.eclipse.core.runtime.adaptor.EclipseStarterと呼ばれるクラスがあります。これにより、OSGiフレームワークが起動します。
Properties props = new Properties();
// add some properties to config the framework
EclipseStarter.setInitialProperties(props);
BundleContext context = EclipseStarter.startup(new String[]{},null);
フレームワークを構成するには、いくつかのプロパティが必要です。ここで、文書化されたすべてのプロパティを確認できます。スタートアップを呼び出すと、受け取るBundleContextはシステムバンドルコンテキストであるため、ここからバンドルをインストール/開始/停止できます。
すべてのプロパティを設定した場合、startup()に引数を渡す必要はありません。
すべてのEquinoxおよびその他のバンドルは、EquinoxWebサイトからダウンロードできます。
OSGi 4.1では、これは標準化されています。OSGiコンテナーを埋め込む方法を説明しているhttp://njbartlett.name/2011/03/07/embedding-osgi.htmlをご覧ください。
この仕様では、OSGiフレームワークをインスタンス化、構成、および開始する方法は定義されていません。したがって、通常のJavaコードからOSGiフレームワークを実行することは、常に特定のフレームワーク実装(Equinox、Felix、Knopplerfishなど)に固有です。
Apache Felix(オープンソースのOSGiフレームワーク)をアプリケーションに組み込むのはかなり簡単です。
詳細については、 http://felix.apache.org/site/launching-and-embedding-apache-felix.htmlを参照してください。
プロジェクトequinox-headless-serviceを参照してください。equinoxを起動するコードがあります。
最近、EquinoxOSGiランタイムをJavaに埋め込む方法の簡単な概念実証を作成しました。詳細については、Githubhttps://github.com/sarxos/equinox-launcherで私のプロジェクトをフォローしてください。