首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Osgi getService()

Osgi getService()
EN

Stack Overflow用户
提问于 2010-11-24 19:29:39
回答 3查看 2.2K关注 0票数 1

在我们的项目(Osgi,Spring-Dm,Apache-Felix)中,当BundleContext.getService()返回null时,我们在生产中遇到了一些问题。这种情况很少发生,而且不是在一开始,所以这不是一个配置错误的问题。

另一种选择是使用ServiceTracker来定位服务,但由于该错误非常罕见,我不确定更改它是否能解决这种情况。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-24 22:32:22

OSGi规范说明该方法返回

  • 与reference
  • 或null关联的服务的服务对象如果
    • 该服务未注册
    • ServiceFactory返回的服务对象未实现它在其下注册的类
    • ServiceFactory引发了null

我的第一个猜测是该服务没有注册。

顺便说一句,使用Spring-DM应该会使大多数对服务注册中心的编程访问变得不必要。至少在我们的公司,这些调用通常是被禁止的,并且只允许在较低级别的技术代码中使用。

票数 3
EN

Stack Overflow用户

发布于 2010-11-26 01:15:35

Uberto,这个服务还没有注册,这一点都不奇怪。OSGi是动态的。服务来来去去。如果您试图在注册服务之前访问它,那么您将得到null。

当您执行普通的getService()时,您在某种程度上假定服务已经存在。如果您需要服务在那里,那么您应该做一些涉及等待注册事件的事情。这可以使用ServiceTracker来完成,但它的级别相当低。正如其他人指出的那样,使用Spring-DM或声明性服务可以使这一点变得非常简单和健壮。

票数 1
EN

Stack Overflow用户

发布于 2019-05-01 18:41:46

如果ServiceReference不为null并且在getService(serviceReference)时获取null指针,则服务实现类未正确初始化。

确保服务实现类的构造函数是公共的,并且在创建对象时没有错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4266254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档