当前位置: 首页 > 知识库问答 >
问题:

差异btw ServiceTracker,ServiceReference

刘星火
2023-03-14

我是新来的<code>OSGi</code>并且已经学习了一段时间。

我想知道<code>ServiceTracker、ServiceReference在使用方面的主要差异和好处

我在两个ServiceTracker中都使用了一个示例

在我读<代码> ServiceTracker > < /代码

有人能解释一下吗?非常感谢。

共有2个答案

李建中
2023-03-14

我同意Neil所说的话,但我需要扩展它来回答你的评论:如果你想使用Maven使用声明性服务构建你的项目,你必须使用maven-bundle-pluginmaven-scr-plugin。前者在引擎盖下使用bnd,而后者处理DS注释。例:

        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.3.7</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-Name>${project.name}</Bundle-Name>
                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                    <Export-Package>${project.artifactId}.api</Export-Package>
                </instructions>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-scr-plugin</artifactId>
            <version>1.9.0</version>
            <executions>
                <execution>
                    <id>generate-scr-scrdescriptor</id>
                    <goals>
                        <goal>scr</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

在此示例中(在< code>build部分),我指示< code>maven-bundle-plugin导出我的< code>${project.artifactId}中的所有包。api目录(这是我的OSGi项目中的约定),并且< code>maven-scr-plugin基于我的Apache Felix声明性服务注释生成xml配置

我建议您阅读ApacheFelix声明性服务注释以及它们的工作原理,因为从长远来看,这将对您有很大帮助。

我有一个OSGi应用程序的例子,你可以看看:这里

慕容康安
2023-03-14

我建议你两个都不要用!

< code>ServiceReference只是表示OSGi服务注册表中的一个条目。您可能是指您正在使用API调用访问服务,如< code > bundle context . getservicereference()。这是使用OSGi服务的最低可能级别,正如你可能已经注意到的,它非常复杂,并且将你的代码耦合到OSGi API。

<代码> ServiceTracker > < /代码是非常小的家庭

我强烈建议避免最低标准

作为替代方案,我建议学习声明式服务。这为您提供了一个基于依赖注入的编程模型,它将您与OSGi API分离。这是更容易和更安全!您可以从以下教程开始:http://bndtools.org/tutorial.html

 类似资料:
  • 本文向大家介绍成本差异和进度差异之间的差异,包括了成本差异和进度差异之间的差异的使用技巧和注意事项,需要的朋友参考一下 对于任何应用程序或专门用于任何项目,最关注的因素之一是在开发前和开发后阶段的预算管理和时间管理。因此,要评估任何项目的这两个主要因素,有很多方法,其中成本差异和进度差异是两个重要且主要的方法。 顾名思义,“成本差异”基于项目开发中花费的成本,而“进度差异”则基于相同开发中花费的时

  • Rax 是一个跨容器的渲染引擎。底层依赖各个容器的实现,所以容器能力的差异也会在 Rax 中有所体现。 主要的容器能力差异来自于 Web 、 Weex 和小程序环境。Web 是当前应用最广泛使用的渲染技术,Weex 是基于客户端的跨平台解决方案,小程序是一种运行在支付宝、手机淘宝等客户端中的开放模式。 原生开发平台和 Web 平台之间的差异,在功能和开发体验上都有一些差异。 样式能力差异 由于 W

  • 问题内容: 有人可以概述可用的各种Hadoop发行版之间的各种差异吗? Cloudera - http: **//www.cloudera.com/hadoop** 雅虎-http : //developer.yahoo.net/blogs/hadoop/ 以Apache Hadoop发行版为基准。 是否有 充分的理由 在标准Apache Hadoop发行版上使用这些发行版之一? 问题答案: 免责

  • 我读过关于SOAP和作为web服务通信协议的REST之间的区别的文章,但我认为REST相对于SOAP的最大优势是: > REST更动态,不需要创建和更新UDDI(通用描述、发现和集成)。 REST不仅限于XML格式。RESTful web服务可以发送纯文本/JSON/XML。 但是SOAP更加标准化(例如:安全性)。 那么,我这几点是对的吗?

  • 问题内容: 我有一个PostgreSQL函数来计算日期差: 如果直接减去日期,则会计算出差额。但是在我的情况下,日期在变量as和中存在,这导致了问题。 如何减去变量中包含的日期? 问题答案: 除错 你的函数是做可以做 很多 简单。语法错误的实际原因在这里: 看来您正在尝试转换为,这是毫无意义的,因为您的参数已声明为已经。 这也行不通。我在这里引用手册: 为避免语法歧义,“字符串”类型的语法只能用于

  • 这两门课的主要区别是什么。主要是,什么情况下我会使用其中一个而不是另一个? 协议包http://www.sching.com/javadoc/hadoop/org/apache/hadoop/hdfs/protocol/hdfsfilestatus.html