我最近偶然发现了这样一个事实,即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