2012-04-21 15 views
2

hereは、platform:/plugin/de.vogella.rcp.plugin.filereader/files/test.txtのようなURLを介してバンドルからファイルを参照する方法を示しています。特定のバージョンのバンドルからファイルを取得する

同じバンドルの2つのバージョンを同時に実行したいと思います。取得するファイルがバージョンによって異なることがあります。上記のURLスキームでバージョン情報を使ってバンドルを参照することもできますので、正しいバージョンのファイルを入手できますか?

これができない場合は、別の方法で特定のバージョンのバンドルを取得できますか?

答えて

2

いくつかの選択肢があります。アンダースコアで区切られたプラグイン名にバージョンを追加するのはうまくいくはずですが、プラットフォームURLハンドラで動作することを確認するために試すことはできません。例:platform://my.bundle_3.1/some/file.txt

OSGi APIを直接使用することはできません。 BundleContextがある場合は、それを使用して正確なバンドルを検索し、bundle.getResource()に電話して、必要なリソースを取得します。

0

同じバンドルの2つのバージョンを同時に実行することはできません。バンドル解決と呼ばれるOSGiの起動時には、すべての扶養家族を最も満足させるために、利用可能なすべてのバンドルの単一バージョンを選択するプロセスがあります。実際に2つのバージョンが必要な場合は、バージョン番号をバンドルIDにプッシュすることによって何らかの方法で偽装する必要があります。その時点で、それらを区別する方法が明確になります。

+2

OSGiフレームワークでは同じバンドルの複数のバージョンを実行できますが、個々のバンドルは通常バンドル依存関係の1つのバージョンにのみ接続されます。 –

+0

真実ですが、これはより正確です。すべての従属者は1つのバージョンしか観察しませんが、異なる従属者は実際に異なるバージョンを観察できます。 –

+0

バンドルのエクスポートパッケージとパッケージは、配線されているエンティティです。同じシンボリック名と同じバージョン(または最後のリリース以降)のバージョンまたは異なるバージョンで、バンドルをいくつでもインストールできます。 –

1

BundleTrackerを見ると、バージョンに関係なくバンドルを追跡するのが簡単になります。一般的には、バンドルの名前やバージョンを調べず、含まれているリソースに反応するほうがよいです。つまり、OSGiエクステンダパターンを検索します。

関連する問題