【发布时间】:2014-02-11 19:38:31
【问题描述】:
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());
这个引用真的会因为它的范围在组合之外而失败吗?
如果组合内的组件包含对组合外发布的服务的引用怎么办?这个引用也会失败吗?
注意:我暂时对导入或导出的服务不感兴趣。
【问题讨论】:
标签: osgi composition composite-component composite ipojo