簡體   English   中英

將接口的多個實現公開為OSGI服務

[英]Exposing multiple implementations of a interface as OSGI service

我有一個有兩個實現的接口。 我想將這兩個實現公開為OSGi服務,但是當我這樣做時,一個覆蓋另一個。 請找到我正在做的配置:

<bean id="formService" class="com.dbt.form.service.FormService"/>
<bean id="formAPIService" class="com.dbt.form.service.FormAPIService"/>
<osgi:service 
    ref="formAPIService" 
    interface="com.dbt.form.service.ifc.IFormService"/>
<osgi:service 
    ref="formService" 
    interface="com.dbt.form.service.ifc.IFormService" />

這里formServiceformAPIService實現覆蓋。

請幫我解決這個問題。

第二個服務不會覆蓋第一個服務......這兩個服務都將單獨發布,您可以通過在OSGi Gogo shell中鍵入inpect cap service命令來確認。

可能發生的情況是您的消費者代碼只會選擇一個可用的服務實例。 在這種情況下,您需要編寫您的使用者以綁定到所有實例,或使用排名組合或目標篩選器來確定您想要的特定服務。 您應該提供有關如何使用這些服務的更多信息,因為這是問題所在(可能)。

閱讀本頁... 第8章服務注冊表部分8.2.2.3。

您可以使用osgi 引用標記的bean-name屬性。 導入服務bean-name時,引用該服務的id屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM