【问题标题】:OSGi: What happens if not to unget serviceOSGi:如果不取消服务会发生什么
【发布时间】:2017-04-01 08:25:33
【问题描述】:

这是我获得 OSGi 服务的方式:

ServiceReference reference = bundleContext.getServiceReference(Foo.class.getName());
 Foo foo=(Foo) bundleContext.getService(reference);

如果我在完成服务后不执行bunldeContext.ungetSerivice(reference) 会发生什么:

  1. 如果我手动注册服务,例如在激活器中
  2. 如果我使用声明式服务并且它是单例的

【问题讨论】:

    标签: java osgi declarative-services


    【解决方案1】:

    OSGi 框架为您的包维护每个服务的使用计数。如果你的包没有取消服务,当你的包停止或服务被取消注册时,框架会自动释放它。

    如果您使用的是声明式服务,SCR 将在引用服务的组件生命周期中的适当时间处理调用 unget。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 2013-12-20
      • 2016-01-10
      • 1970-01-01
      • 2020-07-10
      相关资源
      最近更新 更多