私のバンドルは、インターフェースと、このインターフェース実装を使用してそれらすべてをコールバックするコンポーネントを定義します (存在する場合)。
良い例えは LogService です。1 つ (または複数) 存在する場合は、メッセージでそれらを呼び出します。
これが私の DS 宣言です。
@Reference(cardinality= ReferenceCardinality.MULTIPLE,
policy = ReferencePolicy.DYNAMIC,
service = ITestResultsParserService.class)
public void bindTestResultsParser(ITestResultsParserService parser) {
testResultsParserServices.add(parser);
}
public void unbindTestResultsParser(ITestResultsParserService parser) {
testResultsParserServices.remove(parser);
}
したがって、私のバンドルは、そのサービスの実装の有無にかかわらずデプロイできると期待しています。
ただし、日食が私に与えるものは次のとおりです。
なんで?これはまったく要件ではありません。それは明らかにオプションです。
この問題について話していると思われるこのチケットを見つけましたが、なぜクローズされたのかは明らかではありません。チケットに記載されているように、これを bnd.bnd に追加しました。
-resolve.effective: アクティブ;skip:="osgi.service"