繁体   English   中英

跟踪OSGi中的特定捆绑包

[英]Tracking specific Bundles in OSGi

我是OSGi的新手,我对跟踪捆绑软件有疑问。 我之所以使用BundleTracker,是因为我想要特定的捆绑软件,并且想通过其ID知道我正在使用哪个捆绑软件。 一些捆绑软件(3)实现了相同的接口。 我只想跟踪那些实现该接口的捆绑软件。 我怎样才能做到这一点?

如果要选择特定服务,则可以使用该服务的属性。 这与束完全无关。 这意味着您使用特定属性注册了服务实现(这是BundleContext.registerServiceDictionary -argument的目的)。

然后,您可以使用BundleContext.getServiceReferences并指定仅选择具有正确属性的服务的filter-expression( 此处描述了语法)。 您可以进行设置,以便始终获得最多包含一个元素的数组或集合。

如果使用声明式服务 ,这一切将变得更加容易,因为您可以分别在提供组件和使用组件的服务描述符中分别指定属性和过滤器。 您还可以通过配置管理器使其一端或两端都可配置 (服务组件配置中的属性作为公开服务或使用的引用的属性传播)。 我真的建议您在开始OSGi中的任何重要工作之前先检查声明式服务。

请注意,您应注意不要以这种方式实施硬编码接线,因为那样会破坏模块化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM