繁体   English   中英

OSGi:如何检测捆绑包何时注册到新服务

[英]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.

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