[英]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" />
這里formService
被formAPIService
實現覆蓋。
請幫我解決這個問題。
第二個服務不會覆蓋第一個服務......這兩個服務都將單獨發布,您可以通過在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.