[英]OSGi: How to detect when a bundle registers to a new service
我想知道环境中的捆绑包何时使用context.registerService(...)注册服务。
是否有诸如FrameworkEvent.STARTED之类的侦听器?
谢谢。
侦听服务更改在OSGi中非常常见。 普通的API方式是使用ServiceTracker 。 您可以指定您感兴趣的服务,并在注册或取消注册该服务时获得回调。
推荐的方法是使用声明性服务(DS)或蓝图之类的框架,这些框架也提供侦听服务的方式。
这是使用DS通过接口侦听所有服务的方法。 另请参阅@Reference的javadoc。
@Reference(unbind="unbind"
public bind(MyService my) {...}
public unbind(MyService my) {...}
您可以通过BundleContext#addServiceListener注册ServiceListener 。
对于实际示例,请查看Gemini Blueprint框架如何与服务侦听器一起使用: OsgiServiceCollection 。 有OsgiServiceCollection $ BaseListener侦听器实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.