1

コンテナーにインストールされていないバンドルをカプセル化する OSGi フレームワーク API に何かありますか? 基本的に、ファイルを取得し、ファイルシステム内のバンドルに対して getSymbolicName()、getExportedPackages()、getBundleVersion() などでオブジェクトを生成するもの。

Bundleが表示されますが、ドキュメントの最初の文には次のように記載されています。

フレームワークにインストールされたバンドル。

したがって、このインターフェイスには、インストールされていないバンドルには意味をなさないメソッドがあり、ファイルシステムに座っているだけです。これが必要です。たとえば、コンテナの外ではstart()意味をなさないメソッドがあります。と同じgetBundleId()

必要なのですが、自分で作成する前に標準のものがあるかどうかを知りたいです

4

1 に答える 1

1

あなたが言うように、バンドルはインストールされたバンドル用です。コンテナーによって処理されるバンドルの OSGi コンテナー内で使用できます。ただし、あなたが言及した情報が必要な場合は、小さな関数で非常に簡単に取得できます。

  • 新しい JarFile(ファイル名) を作成します
  • マニフェストを読む
  • マニフェストから値を読み取り、org.osgi.framework.Constants インターフェースを manifest.getMainAttributes().get(key) 関数のパラメーターとして使用します。

ここの checkBundle() 関数で例を見つけることができます(91 行目から)

編集

バンドルがファイル システムからではなく、別の場所からのものである場合は、JarInputStream を使用できます。

Felix マニフェスト パーサー クラス(または Equinox または Knopflerfish に相当するクラス) をスタンドアロン プロジェクトに取り出して、コミュニティと共有してみてください ;-)。

于 2013-10-25T14:21:36.073 に答える