OSGi 应用程序

OSGi 应用程序会组合一组捆绑软件以提供一致的业务逻辑。应用程序可由不同捆绑软件类型组成,如支持 Web 的捆绑软件以及支持持久性的捆绑软件。

OSGi 应用程序中的捆绑软件与另一个 OSGi 应用程序中定义的捆绑软件、服务或软件包隔离,除非这些捆绑软件、服务或软件包由这两个应用程序显式共享。 OSGi 应用程序可以直接包含 OSGi 捆绑软件,也可以直接引用在 OSGi 捆绑软件存储库中主管的捆绑软件。

应用程序中的 OSGi 捆绑软件可与其他 OSGi 应用程序共享服务。如果某个 OSGi 应用程序产生任何外部服务和引用,那么会通过在应用程序清单中声明这些服务和引用来将它们显式公开。同样,该 OSGi 应用程序所耗用的任何外部服务和引用也在应用程序清单中进行声明。OSGi 应用程序还可以使用元数据在系统中启用它的某些构成捆绑软件的共享。通过这种方式进行共享将减少系统的内存和资源需求。

OSGi 应用程序包含:
归档内容
应用程序清单
部署清单

归档内容

根据在应用程序清单中是否定义了 Application-Content 头,将以两种不同的方式使用归档内容。
  • 如果未定义 Application-Content 头,那么归档内容会定义 OSGi 应用程序内容。
  • 如果定义了 Application-Content 头,那么归档内容会定义从中供应捆绑软件的初始捆绑软件存储库。如果将特定版本的捆绑软件安装到受管存储库中,并且该捆绑软件也包含在应用程序归档内,那么将使用归档中的捆绑软件。

应用程序清单

应用程序清单 META-INF/APPLICATION.MF 描述了应用程序级别的模块性。缺省情况下,未声明应用程序清单时,应用程序内容是包含在 OSGi 应用程序中的 OSGi 捆绑软件集,并且不产生或耗用外部服务或引用。

应用程序清单可包含以下头:
Application-SymbolicName

OSGi 应用程序的唯一符号名称,它使用与 Java 类似的软件包表示法。

Application-Version

应用程序的版本,它使用适用于捆绑软件的 OSGi 语法。

Application-Name

这是应用程序的名称.

Application-ImportService

为捆绑软件解决方案声明 OSGi 框架所使用的捆绑软件的外部依赖关系。可针对每一个服务声明特定版本或版本范围。

应用程序所耗用的适用于外部服务的一组过滤器。应用程序清单必须包含服务所需的类。 如果未指定此头,那么将不导入任何必需的服务。

使用逗号分隔列表指定所必需的服务,指定时服务接口名称在前,后跟属性或伪指令。
<service identifier>;<directives>;<attributes>
例如:
test.it;filter="some_filter"
Application-ImportService 头具有下列属性:
过滤
OSGi 服务过滤器。
Application-ExportService

声明在捆绑软件外部可视的服务。此处未声明的任何服务仅在捆绑软件中可视。

应用程序所产生的适用于外部服务的一组过滤器。如果未指定此头,那么将不导出任何必需的服务。

使用逗号分隔列表指定已导出服务,指定时服务接口名称在前,后跟属性或伪指令。
<service identifier>;<directives>;<attributes>
例如:
test.it;filter="some_filter"
Application-ExportService 头具有下列属性:
过滤
OSGi 服务过滤器。
Use-Bundle

为应用程序捆绑程序提供至少一个软件包的共享捆绑软件。

捆绑软件或组合捆绑软件的列表,它们用于满足 Application-Content 列表中的捆绑软件的包依赖性。Use-Bundle 列表中的每个捆绑软件或组合必须为 Application-Content 列表中的至少一个捆绑软件提供至少一个包。在运行时,会将这些捆绑软件供应到共享捆绑软件空间中。

通常不需要 Use-Bundle 头,但该头在有些情况下很有用。可以使用它来限制可以进行共享的级别。例如,您可以确保应用程序对其已测试的包导入使用相同的捆绑软件。或者,可以确保两个应用程序将同一捆绑软件用于软件包导入。通过在应用程序级别设置该限制,捆绑软件可以保持灵活性。

Application-WebModules

应用程序中所包括的非 OSGi 动态 Web 项目的列表。

此头不是 OSGi 标准的一部分。

Application-Content
包括在应用程序中且具有可接受的 OSGi 版本规范范围的组合捆绑软件、捆绑软件片段和捆绑软件的列表。
提示: 在 Application-Content 列表中包括捆绑软件片段时,请确保包括该片段的主机捆绑软件。
格式是模块声明的以逗号分隔的列表,每个模块声明使用以下格式:
<module identifier>;<directives>;<attributes>

通常,模块标识是捆绑软件的符号名称。要引用不在捆绑软件内的资源,模块标识是相对于 OSGi 应用程序根目录的路径。

Application-Content 头具有下列属性:
version
模块的版本将使用适用于版本范围的 OSGi 语法进行指定。指定应用程序的最低必需版本,后跟应用程序可升级至的最高版本。例如,"[1.0.0,2.0.0)" 意味着版本 1.0.0 及 2.0.0 之间的所有版本,包含版本 1.0.0 但不包含版本 2.0.0。

Application-Content 头定义组成业务服务的重要应用程序,但是它不定义应用程序中捆绑软件的完整列表。 如果内容中所列的某个捆绑软件使用未包括在应用程序内的软件包,那么将执行依赖关系分析并包括任何缺少的捆绑软件。 这些捆绑软件不能向应用程序外部提供服务并且不能向这些服务应用安全性。通过这种机制包括的捆绑软件已共享。

部署清单

安装 OSGi 应用程序时,应用程序清单会指定组成应用程序的捆绑软件。它可以为某些捆绑软件指定多个版本。

部署清单 META-INF/DEPLOYMENT.MF 指定构成应用程序的所有捆绑软件,其中包括以下依赖关系分析所需的捆绑软件。部署清单指定在应用程序中所使用的每个捆绑软件的确切版本。在安装企业捆绑软件归档 (EBA) 资产时会自动创建部署清单,它确保在每一次应用程序服务器启动时,组成该应用程序的捆绑软件是相同的。

EBA 会定义一组作为单个 OSGi 应用程序进行部署并且与其他 OSGi 应用程序隔离的 OSGi 捆绑软件。 EBA 文件是具有 .eba 文件扩展名的单个归档文件。它包含一组应用程序模块和/或应用程序清单。

在安装应用程序之后,可通过配置该 EBA 资产来更新捆绑软件的版本。

部署清单包含以下头:
Application-SymbolicName
应用程序的唯一符号名称,它使用与 Java 类似的软件包表示法。此符号名称与应用程序清单中的 Application-SymbolicName 值相匹配。
Application-Version
应用程序的版本,它使用适用于捆绑软件的 OSGi 语法。版本与应用程序清单中的 Application-Version 值相匹配。
Deployed-Content

捆绑软件的符号名称和要使用的确切版本的逗号分隔列表。

此列表包含在应用程序清单中的 Application-Content 头中列出的所有捆绑软件以及根据依赖关系分析导入的捆绑软件。通过使用已转换捆绑软件的符号名称包含了非 OSGi 模块类型。

Deployed-Content 头具有以下伪指令:
deployed-version
捆绑软件的确切版本,使用适用于版本的 OSGi 语法进行指定。
指示主题类型的图标 概念主题
信息中心的条款和条件 | 反馈

时间戳记图标 最近一次更新时间: 2014 年 4 月 17 日

文件名:ceba.html