2013-04-28 88 views
0

當我建立一個緩存系統,在我的OSGi應用程序在那裏我最初的想法是,確定當服務被註冊我想申請緩存來,我只是代理該服務,並與註冊代理非常高的服務排名。活力使用白羊座藍圖

這幾乎工程,這取決於其中爲了我的束開始。 如果消費者開始最後一切正常,並且如果我停止緩存捆綁,如果我重新啓動緩存束那麼消費者沒有得到服務的代理版的消費者fallbacking原來的執行

爲了舉一個簡單的例子來證明這一點,我做了一個簡單的捆綁包,它用一個更高級別的手工註冊一個知道的服務(即不創建代理等),問題依然存在,當更高級別的服務獲得開始消費者仍然使用排名較低的服務。

做藍本的活力只適用於某些情況下?

  1. 初始佈線 - >選擇排名最高的服務
  2. 當有線服務消失 - >選擇排名最高的服務
  3. 當一個新的服務出現 - >不做任何事

有沒有辦法在3:d情況下獲得1和2的行爲?

還是有更好的方式來完成我想要做什麼? IE瀏覽器。與HookEvent或類似?

感謝

編輯: 我通過代理註冊,這似乎是更新服務佈線後更新包用於解決這方面的問題。

Bundle[] usingBundles = reference.getUsingBundles(); 
for(.....) 
{ 
    b.update(); 
} 

回答

1

那麼,服務排名僅適用於尋找服務的時間。這就是說你可能需要一些其他的方式來告訴你的消費包,你正在尋找的服務又回到了緩存功能。您可以嘗試在註冊專用代理服務時觸發特殊事件,並在服務使用者包中使用這些服務。如果發現這些事件對受歡迎的服務「重新綁定」。儘管所有這些可能需要的不僅僅是一個藍圖xml。

相關問題