服务活力和蓝图问题

时间:2016-08-24 15:21:06

标签: osgi apache-karaf blueprint-osgi declarative-services

我有一个非蓝图包,它通过声明服务注释提供服务。

我有另一个包,使用蓝图,其中包含此服务的可选引用,然后将此引用注入到许多已声明的bean中。

在Karaf容器内启动,该服务已注册,蓝图包可以访问它并按预期使用。服务提供包的配置可以更新,它是未绑定的,并再次反弹到蓝图包,这是完美的。

但是,当重新启动或更新服务提供包时,服务是未绑定的,但从不反弹到使用包,因此蓝图引用持有的代理对象永远不会解析为服务引用。

有时重新启动蓝图捆绑包会解决这个问题,但通常需要重新启动框架以使其重新运行。

当非蓝图bean通过声明性服务使用服务时,我不会得到相同的行为。

使用DS和蓝图混合提供/使用服务是否有任何类似问题?

1 个答案:

答案 0 :(得分:0)

蓝图不是动态的。它有一个"阻尼"代理试图在服务活力上设置壁纸,但并不总是提供所需的东西。一般来说,我总是使用DS over Blueprint。