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