OSGI组件对满意服务的引用不满意

时间:2017-10-25 12:01:06

标签: java reference dependencies osgi equinox

我使用OSGI和equinox,并且在新组件依赖项上遇到问题。它有两个服务引用,它们都被标记为“不满意”。

Component with unsatisfied references

这将是一个简单的不满意的引用问题,它不是因为有另一个组件使用其中一个引用并且它满足,另一个是满足的组件系统也是如此。

satisfied dependencies

我试图调试“AgentServiceImpl”'类,以确定这是否可能是它的激活问题,但由于它的引用不满意,所以甚至不会调用类的方法。

不知道我在这个案例中做错了什么,任何修复建议或解决这个问题的方法都会非常感激。

[更新]

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

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

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

1 个答案:

答案 0 :(得分:1)

事实证明这是一个服务配置问题。

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

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

可能这可以避免在日志上发出警告信息,说明发生这种情况:(