我目前正在与OSGi服务“挣扎”,或者更具体地说,是服务之间的连线。我了解DS,SCR的基础知识以及组件实例获取服务的一般策略。无论如何,这是我的问题:
关注DS,组件声明例如他们在XML文件中提供和使用的服务。在我的例子中,我对特定组件的“使用/引用”服务感兴趣(它们由组件的XML文件中的“Reference”标签声明)。
E.g。考虑一个正在运行的OSGi应用程序:一堆捆绑包基于服务(DS)相互协作。现在,我想选择一个特定的包并查询它所服务的服务的所有引用 - 无论这些服务当前是否可用。
参考Apache Felix GoGo shell命令,例如 inspect requirements * ,我确实获得了有关导入的软件包等的信息,但没有关于消费服务的完整概述( - >当前使用的服务组件正在等待的服务。
我已经阅读了Framework API,它提供了对服务的注册,修改和注销的深入了解,但显然,它没有提供有关哪些服务包正在等待的信息。遵循OSGi核心规范,这可以通过 Listener Hook 来实现。
没有办法,我可以查询,例如SCR获取特定包的所有引用服务?显然,SCR应该读取包的Service-Component-XML文件并“注册”某种“服务跟踪器”来跟踪消耗的/引用的服务 - 因此,捆绑的消费/引用服务的信息应该以某种方式可用,不应该吗?
如果你可以帮助我,那就太棒了。
谢谢, 唐
答案 0 :(得分:0)
结账xray,http://softwaresimplexity.blogspot.com/2012/07/xray-again.html,来自Peter Kriens。