gpt4 book ai didi

java - 组件提供服务

转载 作者:行者123 更新时间:2023-12-01 14:43:05 24 4
gpt4 key购买 nike

我对理解 OSGI 中的术语“组件”和“服务”有一个疑问。我正在使用 apache felix 框架。我已阅读此链接http://wiki.osgi.org/wiki/Declarative_Services#Providing_Services该组件提供服务。但我不明白当组件提供服务时,接口(interface)会做什么?在我看来,接口(interface)是由组件实现的服务。

还有一个疑问是,如果另一个 bundle 想要使用另一个 bundle 的服务,该怎么办?它使用接口(interface)(服务)或组件(实现类)。

请消除我的疑虑,以便我可以更好地理解服务和组件这两个术语以及它们与 scr 符号的关系。

最佳答案

你说得对,事物的名称有时有些不清楚,Felix 和 Equinox 之间的命名也存在一些细微的差异。

在声明式服务中:

OSGi 中的服务是注册到服务注册表的对象。它可以是一个组件,但也可以是您喜欢的任何对象。

组件是对象的具体实例,由声明性服务容器管理。您需要提供一个实现类,容器可以使用它来实例化该类。

有时这就是您所需要的:如果它的所有引用都存在,则该对象将被实例化,并且在适用时将调用激活/停用方法。

如果您还想将其注册为 OSGi 服务以便其他组件可以使用它,您需要:

  1. 实现您要提供的服务的接口(interface)
  2. 表明您希望将其注册为该接口(interface)的服务

如果您确实想要可以将实现类注册为提供的服务,但使用接口(interface)是更好的分离。

要在组件中使用另一个服务,您需要引用它。在 OSGi wiki 上,您提到该部分似乎丢失了。这个blog解释得很好。

问候,弗兰克

关于java - 组件提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15745350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com