我有一個關於我的問題的例子。 (文件關節:https://drive.google.com/file/d/0B8ThLrV6-uchaFlTZTNGQ1FnT1E/view?usp=sharing)iPOJO和組件ipojo之間的連接
我有3個ipojo部件(3個bunbles):
CallHello使用這兩者HelloDelay或HelloComponentReplace
HelloDelay和HelloComponentReplace使用HelloService中實現的DelayService服務在HelloPrint中實現的服務。
在部署時,我部署5捆:
service.hello.service.jar
printer.hello.printer.jar
delay.hello。 delay.jar
replace.hello.replace.jar
call.hello.call.jar
結果:DelayService總是使用在HelloDelay實施。
最後,我運行Main.java來控制HelloDelay和HelloComponentReplace之間的手動選擇。
我實現了一個函數來在Main.java中啓動/停止或卸載/安裝bundle(它運行良好)。但是,HelloDelay或HelloComponentReplace是有效的。
在這兩種情況都有效且有效的情況下,我在iPOJO網站上閱讀,我可以使用「比較器」。但我不明白如何應用'比較'來控制上述兩個組件之間的選擇。這是否改變優先權?我知道我們可以改變bundle的優先級,但是我不知道如何應用到我的文件(Main.java)和iPOJO。
我們可以控制需求組件和許多提供組件(相同的服務或接口)之間的連接(綁定)嗎?
我希望你能在這段時間幫助我的困難。
最好的問候,
謝謝您的回覆。 我可以實現這個攔截器作爲一個獨立的組件,它動態地控制服務綁定操作嗎?我在網上https:// github上閱讀你的鏈接和例子。com/apache/felix我不明白攔截器如何影響現有的bundle(對於需要捆綁服務的更改)。 Regards, – HNT 2014-11-06 11:34:23
攔截器是單獨的組件,因此它們可以獨立於應用程序進行開發和部署。他們使用他們的「目標」屬性來定位「服務依賴」。該屬性是一個LDAP篩選器,用於選擇要處理的依賴關係。例如:(dependency.id = foo)選擇id爲foo的依賴項,while(dependency.specification = org.acme.Foo)選擇需要org.acme.Foo服務接口的所有依賴項。 – Clement 2014-11-08 08:01:12