我有可嵌入的 Felix。我有一些 API 包和 Impl。API 导出接口C
.Impl 导入该接口并在激活器中注册 impl。现在我想要 C impl otside OSGi
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
我猜这来自不同的类加载器。但是我该如何解决呢?我们如何从外部与 OSGi 上下文交互?或者我们可以将其全部放入 OSGi 容器中?