Osgi iPOJO复合材料中的隔离是如何工作的?

Osgi iPOJO复合材料中的隔离是如何工作的?,osgi,composition,composite-component,composite,ipojo,Osgi,Composition,Composite Component,Composite,Ipojo,iPOJO提供了一种机制来创建包含基元类型组件实例的组合。我感兴趣的是理解iPOJO为组合子实例提供的服务提供隔离的机制,以防止从组合外部访问 对于exmaple,假设我有以下组成(使用iPOJO API): 假设组件“prov”实现了一个名为HelloService的服务接口。这项服务被隔离意味着什么 这是否意味着如果我试图通过使用服务引用从外部捆绑包(不是组合的一部分)访问服务: ServiceReference ref = context.get

iPOJO提供了一种机制来创建包含基元类型组件实例的组合。我感兴趣的是理解iPOJO为组合子实例提供的服务提供隔离的机制,以防止从组合外部访问

对于exmaple,假设我有以下组成(使用iPOJO API):

假设组件“prov”实现了一个名为
HelloService
的服务接口。这项服务被隔离意味着什么

这是否意味着如果我试图通过使用服务引用从外部捆绑包(不是组合的一部分)访问服务:

   ServiceReference ref = 
                  context.getServiceReference(HelloService.class.getName());
这个引用真的会失败吗,因为它的作用域在组合之外

如果组合内部的组件包含对在组合外部发布的服务的引用,该怎么办?这个引用也会失败吗


注意:我目前对导入或导出的服务不感兴趣。

iPOJO组合依赖于iPOJO服务上下文。在iPOJO中,常规OSGi捆绑包上下文由两部分组成:以捆绑包为中心的部分负责类加载活动,以服务为中心的部分负责所有服务交互(发布、查找、绑定…)

当实例在组合中运行时,它将使用本地服务注册表(组合中的注册表)作为“本地”服务上下文运行。因此,从组合内部注册的服务无法从外部访问,因为它们使用两个不同的服务注册中心:组合的一个和来自OSGi框架的一个

   ServiceReference ref = 
                  context.getServiceReference(HelloService.class.getName());