埋め込み可能なFelixがあります。APIバンドルとImplがあります。APIはインターフェイスをエクスポートしますC
。Implはそのインターフェイスをインポートし、implをアクティベーターに登録します。今、私はC implotsideOSGiを入手したい
FrameworkFactory ff = new FrameworkFactory();
...
BundleContext bc = fwk.getBundleContext();
...
final ServiceReference[] serviceReferences = bc.getServiceReferences(C.class.getName(), "(objectclass=" + C.class.getName() + ")");
for(ServiceReference serviceReference : serviceReferences){
final Object service = bc.getService(serviceReference);
...
}
今、私はそれと対話したいと思います。振り返ってできる
System.out.println(service.getClass().getMethod("some").invoke(service)); //using
しかし、私はそれをキャストすることはできません
System.out.println(service instanceof C); //prints false
私はそれが異なるClassLoadersから来ていると思います。しかし、どうすればそれを解決できますか?外部からOSGiコンテキストとどのように相互作用できますか?それとも、すべてをOSGiコンテナーに入れることができますか?