iPOJO提供了一種機制來創建包含原始類型組件實例的組合。我有興趣瞭解iPOJO爲合成子實例提供的服務提供隔離以便從組合外部訪問的機制。iPOJO Composite中的隔離工作如何?
對於〔實施例,假設我有以下組成(使用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();
假設組件「省」實現所謂HelloService
服務接口。這是什麼意思,這項服務是孤立的?
這是否意味着如果我試圖通過具有服務引用來自外部包(未複合的一部分)訪問服務:
ServiceReference ref =
context.getServiceReference(HelloService.class.getName());
這是參考真的要失敗,因爲它的範圍是在組合之外?
如果組合內部的組件包含對組合外發布的服務的引用,該怎麼辦?這個參考是否也會失敗?
注意:我目前對導入或導出的服務不感興趣。