2012-04-16 88 views
1

我有一个系统声明服务“旧的方式”,使用激活方法。OSGi声明性服务引用非声明性服务

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

+1

你试过了吗?我不明白为什么这应该是一个问题。 – 2012-04-16 08:34:07

+0

是的,我尝试过。我看到了Service Registry中的服务,但是我没有接到任何对绑定/解除绑定方法的调用。当我实施催化剂时,我立即工作。我现在没有时间深入挖掘,但我想这只是一个愚蠢的错误。现在我至少知道它应该工作。 – 2012-04-18 07:16:13

+0

您能否提供您的声明式服务描述符?它可能在引用定义中包含错误。 – 2012-04-18 16:53:59

回答

3

没有“老办法”将您的服务发布到OSGi Service Registry中。 BundleContext.registerService()只有一种方法。你可以从你的activator手动执行,或者Declarative Services/Blueprint引擎可以为你做。

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

3

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

其他服务可能是是另一个DS组件,或者它可能是一个Spring-DM组件,或者它可能会在显式调用OSGi API的情况下发布。你不在乎。这只是一项服务。