今天我在 OSGi Hooks 上做了一点工作,特别是服务FindHook
和EventListenerHook
服务。我想尝试代理服务。工作正常,我的EventListenerHook
服务被代理了。但是我意识到,FindHook
如果服务将通过使用(Bnd 样式)注释相关setXXX
方法来获取服务实现的引用,则不会调用该事件。@Reference
也许这不是注释的问题,但一般来说是DS。
这很糟糕,因为注册了两项服务,一项没有代理,一项已代理。我只想从代理那里获得参考。一般来说,如果没有 DS,你可以通过调用获取引用,BundleContext.getServiceReference(java.lang.Class<S> clazz)
并且事件FindHook.find
将被调用,你可以在其中决定ServiceReference
要返回哪个。
当我使用类似 DS 的方法(对我来说:Bnd 注释@Reference
)时,将执行什么样的流程?正如我在上一节中所描述的:我想决定应该引用哪些服务。