OSGi 应用程序会组合一组捆绑软件以提供一致的业务逻辑。应用程序可由不同捆绑软件类型组成,如支持 Web 的捆绑软件以及支持持久性的捆绑软件。
OSGi 应用程序中的捆绑软件与另一个 OSGi 应用程序中定义的捆绑软件、服务或软件包隔离,除非这些捆绑软件、服务或软件包由这两个应用程序显式共享。 OSGi 应用程序可以直接包含 OSGi 捆绑软件,也可以直接引用在 OSGi 捆绑软件存储库中主管的捆绑软件。
应用程序中的 OSGi 捆绑软件可与其他 OSGi 应用程序共享服务。如果某个 OSGi 应用程序产生任何外部服务和引用,那么会通过在应用程序清单中声明这些服务和引用来将它们显式公开。同样,该 OSGi 应用程序所耗用的任何外部服务和引用也在应用程序清单中进行声明。OSGi 应用程序还可以使用元数据在系统中启用它的某些构成捆绑软件的共享。通过这种方式进行共享将减少系统的内存和资源需求。
应用程序清单 META-INF/APPLICATION.MF 描述了应用程序级别的模块性。缺省情况下,未声明应用程序清单时,应用程序内容是包含在 OSGi 应用程序中的 OSGi 捆绑软件集,并且不产生或耗用外部服务或引用。
OSGi 应用程序的唯一符号名称,它使用与 Java 类似的软件包表示法。
应用程序的版本,它使用适用于捆绑软件的 OSGi 语法。
这是应用程序的名称.
为捆绑软件解决方案声明 OSGi 框架所使用的捆绑软件的外部依赖关系。可针对每一个服务声明特定版本或版本范围。
应用程序所耗用的适用于外部服务的一组过滤器。应用程序清单必须包含服务所需的类。 如果未指定此头,那么将不导入任何必需的服务。
<service identifier>;<directives>;<attributes>
例如:test.it;filter="some_filter"
Application-ImportService 头具有下列属性:声明在捆绑软件外部可视的服务。此处未声明的任何服务仅在捆绑软件中可视。
应用程序所产生的适用于外部服务的一组过滤器。如果未指定此头,那么将不导出任何必需的服务。
<service identifier>;<directives>;<attributes>
例如:test.it;filter="some_filter"
Application-ExportService 头具有下列属性:为应用程序捆绑程序提供至少一个软件包的共享捆绑软件。
捆绑软件或组合捆绑软件的列表,它们用于满足 Application-Content 列表中的捆绑软件的包依赖性。Use-Bundle 列表中的每个捆绑软件或组合必须为 Application-Content 列表中的至少一个捆绑软件提供至少一个包。在运行时,会将这些捆绑软件供应到共享捆绑软件空间中。
通常不需要 Use-Bundle 头,但该头在有些情况下很有用。可以使用它来限制可以进行共享的级别。例如,您可以确保应用程序对其已测试的包导入使用相同的捆绑软件。或者,可以确保两个应用程序将同一捆绑软件用于软件包导入。通过在应用程序级别设置该限制,捆绑软件可以保持灵活性。
应用程序中所包括的非 OSGi 动态 Web 项目的列表。
此头不是 OSGi 标准的一部分。
<module identifier>;<directives>;<attributes>
通常,模块标识是捆绑软件的符号名称。要引用不在捆绑软件内的资源,模块标识是相对于 OSGi 应用程序根目录的路径。
Application-Content 头定义组成业务服务的重要应用程序,但是它不定义应用程序中捆绑软件的完整列表。 如果内容中所列的某个捆绑软件使用未包括在应用程序内的软件包,那么将执行依赖关系分析并包括任何缺少的捆绑软件。 这些捆绑软件不能向应用程序外部提供服务并且不能向这些服务应用安全性。通过这种机制包括的捆绑软件已共享。
安装 OSGi 应用程序时,应用程序清单会指定组成应用程序的捆绑软件。它可以为某些捆绑软件指定多个版本。
部署清单 META-INF/DEPLOYMENT.MF 指定构成应用程序的所有捆绑软件,其中包括以下依赖关系分析所需的捆绑软件。部署清单指定在应用程序中所使用的每个捆绑软件的确切版本。在安装企业捆绑软件归档 (EBA) 资产时会自动创建部署清单,它确保在每一次应用程序服务器启动时,组成该应用程序的捆绑软件是相同的。
EBA 会定义一组作为单个 OSGi 应用程序进行部署并且与其他 OSGi 应用程序隔离的 OSGi 捆绑软件。 EBA 文件是具有 .eba 文件扩展名的单个归档文件。它包含一组应用程序模块和/或应用程序清单。
在安装应用程序之后,可通过配置该 EBA 资产来更新捆绑软件的版本。
捆绑软件的符号名称和要使用的确切版本的逗号分隔列表。
此列表包含在应用程序清单中的 Application-Content 头中列出的所有捆绑软件以及根据依赖关系分析导入的捆绑软件。通过使用已转换捆绑软件的符号名称包含了非 OSGi 模块类型。