私はこの文書を見て初めてこれを見つけられなかったことに恥ずかしがりました。完全性のために私自身の質問に答える。コア仕様のPDFから
...
セクション3.9.9 - 検索オブジェクトのバンドル
バンドルがバンドルコンテキストへのアクセスがないコードで必要とされるシナリオがあります。この の理由で、フレームワークは以下のメソッドを提供します:
フレームワークUtil - getBundle(Class)メソッドを持つFrameworkUtilクラスを使用します。 フレームワークでは、このメソッドを使用して、 クラスローダーを取得する権限を持たずにコードでオブジェクトのバンドルを検索できます。クラスが のバンドルから発生していない場合、このメソッドはnullを返します。
クラスローダー - OSGiフレームワークは、 バンドルから来るクラスのクラスローダーがBundleReferenceインターフェースを実装するようにする必要があります。これにより、レガシーコードはオブジェクトの バンドルを見つけることができます。クラスローダーを取得し、BundleReferenceオブジェクトにキャストすると、 バンドルにアクセスできます。ただし、これには、コード loaderにアクセスするためのコードが必要です。次のコードは、任意のオブジェクトからBundleオブジェクトを取得する方法を示しています。
ClassLoader cl = target.getClassLoader();
if (cl instanceof BundleReference) {
BundleReference ref = (BundleReference) cl;
Bundle b = ref.getBundle();
...
}
OSGiシステムでは、すべてのオブジェクトがフレームワークに属しているわけではありません。したがって、ブートクラスパス loaderなど、BundleReferenceインターフェイスを実装していないクラスローダー を取得することができます。
ありがとう、あなたは私に多くの仕事を保存しました:-) –