Javaライブラリに名前を付けるものは、OSGiコンテキストでは「バンドル」という名前です。
OSGiバンドルは、MANIFEST.MFファイルに特別なメタ情報が含まれるJARファイルです。現在、すべてのOSGiバンドルには、Exported-PackagesまたはImported-Packagesのいずれかがあります。
Export-Packages Manifestヘッダーを使用すると、エクスポートしているすべてのパッケージを表示できます。また、他のプロジェクトでは、使用するパッケージをImport-Packagesに追加するだけです。例を次に示します。
マニフェストをバンドルする:-
Export-Packages: com.demo.exported;
バンドルBマニフェスト:-
Import-Packages: com.demo.exported;version=(1.0.0, 2.0.0]
このようにして、バンドルB(別のプロジェクト)は、バンドルAからインポートしたパッケージ内のクラスからメソッドを呼び出すことができます。これで、import-packageに表示されるバージョンは、すべてのパッケージバージョンで何ができるかを示すだけです。受け入れる..いくつかのインターフェースの2つの異なる実装を持つ2つのバンドルを持ち、このパッケージを2つの異なるバージョンで提供することができます..両方が利用可能になります。
今まで、私は静的データ型について話していました。
宣言型サービスを介してサービスを動的に公開することもできます。この場合、バンドルが公開するすべてのサービスを示す1つのXMLファイル(コンポーネント定義)を定義する必要があります。また、他のバンドルでは、再度定義できます。別のXML。必要なすべてのサービスを示します。これらは、提供サービスおよび参照サービスと呼ばれます。
これで何ができるかについて少し考えられると思います。そして、私があなたの問題の解釈のどこかで間違っているなら、同じことを指定してください。
*注:-そしてもちろん、OSGiは、他のプロジェクトで再利用できる独立したバンドルを作成するために使用されます。これらは、プロジェクトにモジュール性をもたらします。