簡體   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