对 OSGi 应用程序的供应

当您导入企业捆绑软件归档 (EBA) 文件作为资产、更新资产以使用新的捆绑软件版本或将组合捆绑软件作为扩展添加到组合单元时,供应过程将确保所有必需的 OSGi 捆绑软件都可用。 OSGi 应用程序可以使用外部存储库中的捆绑软件、内部存储库中的捆绑软件以及包含在 EBA 文件或组合捆绑软件归档 (CBA) 文件中的捆绑软件。

正式使用 OSGi 应用程序时,开发者将创建应用程序清单,其中会列示应用程序可直接使用的所有捆绑软件。 在此捆绑软件集中,开发者可能会选择仅打包到 EBA 文件中新创建的捆绑软件,并预期从配置的本地和远程捆绑软件存储库中提供其他捆绑软件。 类似地,组合捆绑软件的开发者创建组合捆绑软件清单,该清单列示了该组合捆绑软件使用的所有捆绑软件。 在此捆绑软件集中,开发者可能会选择仅打包一些将对组合捆绑软件直接可用的捆绑软件,并预期从配置的捆绑软件存储库中供应其他捆绑软件。

OSGi 捆绑软件可存储在以下位置:
  • EBA 文件。
  • CBA 文件。
  • 内部捆绑软件存储库。

    WebSphere® Application Server 安装具有一个内部捆绑软件存储库。 可以将 OSGi 捆绑软件或组合捆绑软件添加到内部存储库。 如果捆绑软件由许多 OSGi 应用程序使用,请考虑将该捆绑软件添加到内部存储库。

  • 外部捆绑软件存储库。

    可以指定一个或多个外部捆绑软件存储库的位置,这些存储库包含应用程序所需的捆绑软件。 由于外部捆绑软件存储库的实现方式,可能不能使用外部捆绑软件存储库来供应服务或者存储组合捆绑软件或组合捆绑软件所引用的捆绑软件。

供应将从存储库获取以下类型的捆绑软件:
  • 引用的捆绑软件。 这是应用程序或组合捆绑软件清单中引用的捆绑软件,该捆绑软件不直接包含在 EBA 文件或组合捆绑软件中。
  • 依赖性捆绑软件。 这是未在应用程序或组合捆绑软件清单中引用的捆绑软件,但 在应用程序或组合捆绑软件清单中 引用的捆绑软件需要此捆绑软件。 此类捆绑软件可能有多个级别的依赖性。 即,依赖性捆绑软件本身可能依赖于其他依赖性捆绑软件。

初始导入 OSGi 应用程序以及此后更新 EBA 资产时,会对该资产进行供应。 会对该资产进行解析;即,将通过使用 EBA 文件、内部捆绑软件存储库以及指定的外部捆绑软件存储库集的内容来确定相应版本成员订阅源应用程序捆绑软件的位置。 类似地,将组合捆绑软件作为扩展添加到组合单元时,也会进行供应。 将通过使用组合捆绑软件和可用捆绑软件存储库的内容来确定相应版本成员订阅源捆绑软件的位置。

供应也会检查依赖性并从相关的捆绑软件存储库查找这些依赖性。 依赖性包括导入的软件包、必需的捆绑软件、服务和持久性提供程序。 供应过程通过检查捆绑软件的“蓝图”XML 文件中的 <service><reference><reference-list> 元素来检测服务依赖性。 将捆绑软件添加到内部捆绑软件存储库或在 EBA 或 CBA 文件中提供捆绑软件时,将扫描捆绑软件以获取“蓝图”XML 文件。 如果应用程序代码以直接编程的方式使用 OSGi 服务,那么除非还在“蓝图”XML 文件中指定了那些服务依赖性,否则供应过程不会检测那些服务依赖性。

如果在具有可能版本范围的应用程序清单中引用了捆绑软件,那么供应将查找该版本范围中的捆绑软件。 如果指定的捆绑软件存在多个版本,那么除非选择更高版本会阻止解析应用程序,否则将选择指定范围中的最高版本。

如果捆绑软件和组合捆绑软件中都以相同版本提供了某个必需软件包或服务,那么供应过程将从组合捆绑软件中选择该软件包或服务。

如果成功解析了 OSGi 应用程序的成员订阅源应用程序捆绑软件,那么将生成部署清单。 此清单列示应用程序所需的所有捆绑软件以及 OSGi 应用程序将使用的每个捆绑软件的实际版本。 部署清单包括在应用程序清单中声明的所有捆绑软件,还包括任何依赖性捆绑软件。
注: 如果供应过程确定应用程序清单的 Use-Bundle 头中列出的捆绑软件未向 Deployed-Content 头中列出的捆绑软件提供任何软件包,那么不会在部署清单的 Deployed-UseBundle 头中列出使用捆绑软件的捆绑软件。 并且,除非需要将该使用捆绑软件用于其他目的,否则它不会列示在部署清单的 Provision-Bundle 头中。
成功解析成员订阅源应用程序捆绑软件并保存配置后,将从内部捆绑软件存储库或外部捆绑软件存储库下载所有引用的捆绑软件和依赖性捆绑软件并本地存储在捆绑软件高速缓存中。 对于网络部署配置,该高速缓存是单位范围的,而对于单一服务器配置,该高速缓存是服务器范围的。 如果找不到任何成员订阅源捆绑软件,那么无法解析 EBA 资产。 将显示消息,说明找不到哪些捆绑软件。 继续进行导入或更新之前,必须通过以下某种方式使相关的捆绑软件可用:
  • 将捆绑软件添加到 EBA 或 CBA 文件。
  • 将捆绑软件上载到内部捆绑软件存储库。
  • 在外部捆绑软件存储库中查找捆绑软件并指定该存储库的位置。

下载完所有捆绑软件之后,您可以将该资产添加到业务级应用程序或更新 OSGi 组合单元,以便业务级应用程序使用较新的配置。