能力何时应具有“解决”的有效时间,何时应具有“活动”的有效时间?

您何时希望在解决资源时忽略功能?您何时希望他们受到尊重?

http://bnd.bndtools.org/chapters/230-manifest-annotations.html

https://github.com/bndtools/bnd/blob/e4ffaf6e5fa404972c11e8ff20f3a1228b1655a9/biz.aQute.bndlib/src/aQute/bnd/annotation/headers/RequireCapability.java

https://osgi.org/javadoc/r6/core/org/osgi/resource/Namespace.html#EFFECTIVE_ACTIVE

最佳答案

尽管这并不容易,但我认为您可以从OSGi核心规范中获得必要的信息。

参见章节3.3.3捆绑功能


有效-(解析)指定功能可用的时间,可以是解析(默认)或其他名称。 OSGi框架解析程序仅考虑没有有效指令或有效的== resolve的功能。外部代理可以考虑有效指令具有其他值的功能。


我认为这里的重要部分是“由外部代理商考虑”。

您可以在第3.3.6节“捆绑包要求”中找到相同的内容


有效-(解决)指定考虑需求的时间,可以是解决(默认)或其他名称。 OSGi框架解析程序仅考虑没有有效指令或有效的== resolve的需求。外部代理可以考虑其他要求。有效指令的其他名称应在OSGi联盟中注册


简而言之:OSGi容器仅处理有效:=解决(默认)。其他值可能由3rdparty技术处理。

在8.6章osgi.identity命名空间中,您可以找到有关非解析有效性的示例:

Require-Capability: «
  osgi.identity; «
  filter:="(&(osgi.identity=org.example.foo-source)(version=1.1))"; «
  effective:=meta; «
  classifier:=sources; «
  resolution:=optional


我猜这个需求可以由开发环境解决。通过解决此要求,可以从外部存储库下载捆绑软件的来源。

如果要在MANIFEST标头中提及OSGi服务的用法,则active:= active很有用。 OSGi容器未处理这些要求,但是很高兴知道捆绑包XY需要OSGi服务才能启动其功能(通过检查捆绑包的要求)。

关于java - OSGi功能:有效时间:解决与主动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29141169/

10-10 11:18
查看更多