0

問題文: バンドル A でリソース (myClass とします) を見つけてロードします。見つからない場合は、バンドル B でリソースを見つけて、プログラムでロードします。コントロールはバンドル C にあります。 Bバンドル。

私が知っているのは、OSGi バンドルごとに、親の classLoader がバンドル 0 のクラス ローダーであるということです。とシステム bla bla

バンドル B の CL の親を ---to-> バンドル A の CL に変更し、バンドル B の CL から getClass を変更しても問題ありませんか?

それはベストプラクティスの下にありますか?

制限: ソリューションに import、export、require ステートメントを使用しないでください。

ありがとう

4

2 に答える 2

1

出来ないそうです。Java は、親クラス ローダーを設定するための API を提供しません。この質問をして申し訳ありません。

于 2012-10-05T13:22:45.627 に答える
0

OSGi でのベスト プラクティスは、クラスローダーを変更しないことです。OSGi のシステムは非常によく考えられており、変更するとあらゆる種類の問題が発生します。理想的には、手動でクラスをまったくロードしないでください。クラスまたはリソースのインスタンスが必要な場合は、それを含むバンドルにロードします。別のバンドルでそれが必要な場合のベスト プラクティスは、インスタンスを使用してサービスを公開するか、インスタンスを使用してファクトリを公開することです。

于 2012-10-06T06:14:29.790 に答える