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