0

在 Karaf 版本 3.0.3 中,我能够使用以下代码检索 ServiceReference 对象

ServiceReference serviceReference = 
                (ServiceReference) bundleContext.getServiceReference(CustomService.class.getName());

但在 Karaf 4 中,此代码返回 null。我的服务已启动,我可以在服务列表中看到该服务。

注意:我正在尝试检索作为包装包加载的服务

4

1 回答 1

1

如果您确定您的服务已启动,那么原因是上面的服务提供者和您的服务客户端看到了 CustomService 类的不同实例。

也许你有两个包导出那个包。或者包也嵌入到提供者或客户端中。另一个原因可能是您在服务启动之前检索了服务引用。你在激活器中这样做吗?如果是..那么这是一种不好的做法,因为您可能会遇到时间问题。最好使用 ServiceTracker 或 DS 或蓝图。

您可以使用以下命令检查重复导出:

package:exports  -d
于 2016-02-10T07:31:37.153 回答