iPOJO 提供了一种机制来创建包含原始类型组件实例的组合。我有兴趣了解 iPOJO 为组合子实例提供的服务提供隔离以防止从组合外部访问的机制。
例如,假设我有以下组成(使用 iPOJO API):
PrimitiveComponentType prov = createAProvider(); // Create a primitive type
PrimitiveComponentType cons = createAConsumer(); // Create another primitive type
CompositeComponentType type = new CompositeComponentType()
.setBundleContext(context)
.setComponentTypeName("comp1")
.addInstance(new Instance(prov.getFactory().getName())) // Create an instance in the composite
.addInstance(new Instance(cons.getFactory().getName()));
ComponentInstance ci = type.createInstance();
假设组件“prov”实现了一个名为HelloService
. 这个服务被隔离是什么意思?
这是否意味着如果我尝试通过服务引用从外部包(不是组合的一部分)访问服务:
ServiceReference ref =
context.getServiceReference(HelloService.class.getName());
这个引用真的会失败,因为它的范围在组合之外吗?
如果组合内的组件包含对在组合外发布的服务的引用怎么办?这个引用也会失败吗?
注意:我目前对进口或出口服务不感兴趣。