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