特定的捆绑我是新使用OSGi,我有一个关于跟踪捆绑疑问。我使用的是BundleTracker,因为我想要特定的包,并且我想知道我使用的是哪个包。一些Bundle(3)实现相同的接口。我想跟踪那些实现了这个接口的bundle。我怎样才能做到这一点?跟踪OSGi的
跟踪OSGi的
回答
如果你想选择一个特定的服务,您可以使用服务属性这一点。这完全不受捆绑包的影响。这意味着你注册了具有特定属性的服务实现(这是BundleContext.registerService
中的Dictionary
的参数)。
然后,您可以使用BundleContext.getServiceReferences
并指定仅选择具有正确属性的服务的过滤表达式(语法描述here)。您可以设置它,以便始终获得最多只有一个元素的数组或集合。
这一切都变得容易得多,如果你使用declarative services,因为那么你可以分别指定在提供和消费组成的服务描述符中的属性和过滤器。您还可以通过configuration admin(将服务组件的配置中的属性作为公开服务的属性或使用的引用传播)对其一端或两端进行配置。我真的建议你在开始任何认真的OSGi工作之前检查一下声明式服务。
需要注意的是,你应该注意不要实现硬编码接线这种方式,因为这会杀了模块化。
我可以使用ServiceTracker过滤实现,然后从这些跟踪的包中选择合适的包? –
是,'ServiceTracker'提供了[构造函数,它接受一个'Filter'](http://www.osgi.org/javadoc/r4v42/org/osgi/util/tracker/ServiceTracker.html#ServiceTracker%28org.osgi。 framework.BundleContext,%20org.osgi.framework.Filter,%20org.osgi.util.tracker.ServiceTrackerCustomizer%29)。 –
- 1. Jersey Endpoint + OSGi依赖关系,跟踪
- 2. 如何跟踪OSGi中的软件包之间的数据流
- 3. 如何跟踪Geronimo3中的osgi包故障信息
- 4. 有没有办法轻松跟踪多个OSGi服务?
- 5. 函数drupal的跟踪跟踪
- 6. 跟踪
- 7. 跟踪
- 8. Facebook事件跟踪 - 按钮跟踪
- 9. GDB跟踪:无当前跟踪帧
- 10. 不跟踪WCF服务(诊断跟踪)
- 11. 运动跟踪与Blob跟踪
- 12. Erlang跟踪:无法打开跟踪
- 13. 在apache中禁用跟踪和跟踪
- 14. 用jQuery跟踪点击 - php跟踪
- 15. 究竟跟踪与未跟踪?
- 16. Facebook跟踪和Google跟踪脚本
- 17. 在ng-repeat中跟踪未跟踪
- 18. Android系统跟踪[跟踪标记]
- 19. 跟踪的JavaScript库
- 20. JRuby的栈跟踪
- 21. 跟踪追踪错误
- 22. GPS跟踪GRTQ
- 23. 跟踪技术
- 24. 跟踪currentTimeMillis
- 25. 跟踪更改
- 26. 社会跟踪
- 27. 跟踪更改
- 28. 曲线跟踪
- 29. 电话跟踪
- 30. 文档跟踪
我真的很想知道你为什么要这样做。在OSGi中取决于捆绑包而不是包是一种代码异味,所以你应该尽量避免它。你能解释为什么你认为你需要这个吗? –
Im新的OSGi,抱歉,如果我说错了什么,我只想在许多实现相同接口的bundle中选择一个特定的服务。 –