【问题标题】:OSGi Declarative Service referencing non Declarative Service引用非声明式服务的 OSGi 声明式服务
【发布时间】:2012-04-27 13:21:37
【问题描述】:

我有一个使用激活器方法声明服务“旧方式”的系统。

现在我正在使用声明式服务编写一个新包。 是否可以在我的新包中引用未使用声明式服务技术发布的服务?

【问题讨论】:

  • 你试过了吗?我不明白为什么这会是个问题。
  • 是的,我试过了。我在服务注册表中看到了这些服务,但我没有收到任何对我的绑定/取消绑定方法的调用。当我实现一个激活器时,我立即工作。我现在没有时间深入研究这个,但我想这只是一个愚蠢的错误。现在我至少知道它应该有效。
  • 您能提供您的声明式服务描述符吗?它可能在引用定义中包含错误。
  • 不,很遗憾我不能,但是当我现在查看它时,我在实施类字段中看到一个非常可能的错误。 :-)

标签: osgi declarative-services


【解决方案1】:

没有将服务发布到 OSGi 服务注册表的“旧方法”。 BundleContext.registerService() 只有一种方法。您可以通过激活器手动完成,或者声明式服务/蓝图引擎可以为您完成。

在您的 DS 描述符中,您只需定义对 Service Registry 中可用服务的引用。

【讨论】:

    【解决方案2】:

    是的,这是可能的。当您从 DS 组件引用服务时,您无需担心该服务的内部实现。

    另一个服务可能是另一个 DS 组件,或者它可能是一个 Spring-DM 组件,或者它可能通过对 OSGi API 的显式调用来发布。你不在乎。这只是一项服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-20
      • 2013-10-09
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      相关资源
      最近更新 更多