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());
スコープがコンポジットの外にあるため、この参照は本当に失敗するのでしょうか?
コンポジット内のコンポーネントに、コンポジット外で公開されたサービスへの参照が含まれている場合はどうなるでしょうか? この参照も失敗しますか?
注: 今のところ、インポートまたはエクスポートされたサービスには興味がありません。