我最近偶然發現了這樣一個事實,即OSGi中的Declarative Services可以將組件的配置設置爲required,以便組件在激活時接收它,消除組件激活和配置之間的差距。我也意識到,您可以通過modified
-方法接收配置更新。OSGi聲明性服務與ManagedService配置服務?
在我看來,這個功能與實現ManagedService
接口提供的功能非常相似,並且將其作爲您提供的「服務」之一發布。
看來我可以完全忽略ManagedService
&只是使用DS配置注入。
這些技術之一是否比其他技術更受歡迎?還是我還沒有看到其他的折衷?
好吧,這就是我傾向於做的事情,但我注意到/有點擔心DS組件無法創建,因爲它的配置無效並引發異常,因爲Equinox一直嘗試實例化它。的異常被拋出和記錄。它看起來並不乾淨。 – oconnor0 2010-11-09 05:11:46
如果它的activate方法拋出異常,Equinox不應該繼續嘗試實例化組件。如果配置更改,它應該再次嘗試重新創建組件。至於日誌記錄 - 當然,應該記錄組件引發的異常! – 2010-11-09 08:17:11
什麼是正確的方式來哄DS處理組件作爲'ManagedServiceFactory',而不是'ManagedService'?換句話說,如果有人希望DS爲每個*適用的配置實例創建一個組件的新實例,那有什麼訣竅?是否需要編寫一個Metatype定義? – seh 2011-07-31 15:13:15