在Karaf 3.0.3版中,我能够使用以下代码
检索ServiceReference对象ServiceReference serviceReference =
(ServiceReference) bundleContext.getServiceReference(CustomService.class.getName());
但在Karaf 4中,此代码返回null。我的服务已启动,我能够在服务列表中看到该服务。
注意:我正在尝试检索作为包装包加载的服务
答案 0 :(得分:1)
如果您确定您的服务已启动,那么原因是上面的服务提供商和您的服务客户端会看到CustomService类的不同实例。
也许你有两个导出该包的包。或者包也嵌入到提供者或客户端中。另一个原因可能是您在服务启动之前检索服务引用。你在Activator中这样做了吗? 如果是..那么这是一个不好的做法,因为你可能会遇到计时问题。更好地使用ServiceTracker或DS或蓝图。
您可以使用此命令检查重复导出:
package:exports -d