服务活力和蓝图问题

Issue with service dynamism and blueprint

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

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

在 Karaf 容器中启动,服务已注册,蓝图包可以访问它并按预期使用。可以更新服务提供包的配置,解绑重新绑定到蓝图包,完美。

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

有时重新启动蓝图包可以解决这个问题,但通常需要重新启动整个框架才能使其再次运行。

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

有没有人遇到过将 DS 和蓝图混合用于 provide/consume 服务的任何类似问题?

蓝图不是动态的。它有一个 "damping" 代理,它试图覆盖服务动态但并不总是提供所需的内容。一般来说,我总是会使用 DS 而不是 Blueprint。