繁体   English   中英

嵌入式OSGi框架的消费服务

[英]Consuming Services from Embedded OSGi Framework

我已经嵌入了Felix。 我有一些API捆绑包和Impl。 API导出接口C .Impl导入该接口并在激活器中注册impl。 现在我要获取C隐含的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

我猜这来自不同的ClassLoader。 但是我该如何解决呢? 我们如何从外部与OSGi上下文进行交互? 或者我们可以将其全部放入OSGi容器中?

如果要嵌入OSGi,则该服务的API(即接口“ C”)必须对外部应用程序可见,并通过系统捆绑包导出将其导出到OSGi。 外部应用程序无法从OSGi框架内包含的包中导入软件包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM