获得ServiceReference的实现

时间:2017-06-30 10:53:32

标签: osgi

我有ServiceReference,我想检查实现是否有注释。所以我需要获得实现类。

我想出了如何获得服务实现的接口:

ServiceReference<T> reference = //
String[] interfaces = (String[]) reference.getProperty(org.osgi.framework.Constants.OBJECTCLASS);

但即使使用JavaDoc,我也无法弄清楚如何获得实现(显然没有从上下文获取服务,因为这可能是一个重量级的操作,我只需要类)。

如何从ServiceReference获得实施?

2 个答案:

答案 0 :(得分:1)

所以你想获得服务对象而不获取服务对象?我想你要求的是不可能的东西。您需要获取服务对象以内省它的注释实现类。没有其他办法。确保在完成后取消服务对象。

答案 1 :(得分:0)

您必须使用service = context.getService(reference)获取服务。这不是一个重量级的操作。

您也可以从使用ServiceTracker中受益。 除此之外,我很好奇你想要实现的目标......也许还有更好的方法。