我的基於Java的項目當前正在OSGi容器中運行,其中的其他項目將註冊他們的OSGi服務供其他人使用。如果我知道一個服務目前註冊的,我可以簡單查詢,與「BundleContext的」內置方法:如何獲取所有當前註冊的OSGi服務的列表?
getContext().getServiceReference(LogService.class.getName());
不過,我希望能夠查詢在該上下文中註冊的所有OSGi服務時刻。我查看了BundleContext
的可用方法,但找不到符合我需求的任何內容。我並沒有真正使用註冊服務列表來使用服務對象,而只是簡單地獲取註冊服務的名稱;我不相信這會違反OSGi原則。
編輯:我沒有在我的開發環境中使用Eclipse或Equinox。
編輯:如果訪問OSGi服務是不可能的,或不推薦使用Java,我會打開只通過命令行註冊服務,如果可能的話。
https://stackoverflow.com/questions/11848839/is-there-a-way-to-view-registered-services-in-an-osgi-application –
@spaniard的可能重複我會更新我的問題,包括我不使用Equinox(或Eclipse) – fojalar
如果您使用Gogo:'$ allservicereferences null null'。如果你使用它,你可以使用別名:'as = {allservicereferences null null}'。然後輸入'as'即可。如果你想找到一個特定的服務,你當然也可以通過'grep'管道:'$ as | grep包'。 –