具有满意服务的不满意引用的 OSGI 组件

OSGI Component with unsatisfied references of satisfied services

我在 Equinox 中使用 OSGI,但在新组件依赖性方面遇到了问题。它有两个服务引用,都标记为 'Unsatisfied'。

这将是一个简单的不满足引用问题,它不是因为有另一个组件使用了一个这个引用并且它被满足,另一个是一个在系统上也被满足的组件.

我已经尝试调试 'AgentServiceImpl' class 以确定这是否可能是它激活时的问题,但由于它的引用不满足 class 的方法'甚至打电话。

不知道我在这种情况下做错了什么,任何修复建议或解决此问题的方法都将不胜感激。

[更新]

我注意到我依赖的服务在其组件声明中具有此配置:

policy = ConfigurationPolicy.REQUIRE, configurationPid = "com.rm.ums.ruleengine"

所以,如果我不定义它,它就不应该构建组件。但是,即使检索 ConfigurationAdmin 并设置此配置,组件仍然不会启动。而且控制台上没有为此显示错误消息,在这种情况下它不应该显示错误或警告,以便开发人员知道发生这种情况并可以处理吗?

原来是服务配置问题。

我尝试注入的这个组件的策略为 'REQUIRE',这意味着它不会启动,除非您提供它的配置。我使用 ConfigurationAdmin 在另一个 bundle 上提供配置,但此配置绑定到我的 bundle 而不是需要它的 bundle。

一旦我配置为不将配置绑定到我的包(或手动取消绑定),服务就会按预期启动。

如果日志中有一条警告消息指出发生了这种情况,这可能是可以避免的:(