为什么bnd数字我的包需要可选服务(*,0..n,ReferenceCardinality.MULTIPLE)?

时间:2015-06-03 03:24:31

标签: java osgi bnd bndtools

我的bundle定义了一个接口,以及一个使用这个接口实现来回调它们的组件(如果有的话......)。

一个很好的类比是LogService;如果存在一个(或多个),则使用该消息调用它们。

这是我的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);
}

所以我希望我的捆绑包能够部署或不使用该服务实现。

然而,这是日食给我的:

Eclipse Requirements

为什么呢?这根本不是必需的!这显然是可选的。

我发现this ticket似乎在谈论这个问题,但不明白为什么它已被关闭。我把它添加到我的bnd.bnd,如票证中所述:

  

-resolve.effective:active; skip:=“osgi.service”

1 个答案:

答案 0 :(得分:0)

由于这是一个已修复的错误,而不是一个可能的答案的问题,我正在关闭它。