在 JVM 服务器中部署 OSGi 束

要在 JVM 服务器中部署 Java™ 应用程序,必须在目标 JVM 服务器的 OSGi 框架中为该应用程序安装 OSGi 束。

开始之前

必须将包含应用程序 OSGi 束的 CICS® 束部署到 zFS 上。必须在 CICS 区域中启用目标 JVM 服务器。

关于此任务

CICS 束可以包含一个或多个 OSGi 束。由于 CICS 束是部署单元,因此会将所有 OSGi 束一起作为 BUNDLE 资源的一部分进行管理。 OSGi 框架还会管理 OSGi 束的生命周期,包括依赖性和版本控制的管理。

确保将组成某个 Java 应用程序组件的所有 OSGi 束都部署到同一 CICS 束中。 如果在 OSGi 束之间存在依赖性, 那么请将其部署到相同的 CICS 束中。安装 CICS BUNDLE 资源时,CICS 可确保解析 OSGi 束之间的所有依赖性。

如果在包含公用代码库的 OSGi 束上具有依赖性,请针对该库创建独立的 CICS 束。在此情况下,首先安装包含该库的 CICS BUNDLE 资源十分重要。如果先安装 Java 应用程序,然后再安装其依赖的 CICS 束,那么 OSGi 框架无法解析 Java 应用程序的依赖性。

请勿尝试将包含 OSGi 束的 CICS 束安装到 Liberty JVM 服务器中,因为不支持此配置。您可以将 OSGi 束与自己的 Web 应用程序一起打包在企业束归档 (EBA) 中,也可以使用 WebSphere® Liberty Profile 束存储库以使 Liberty JVM 服务器中的所有 Web 应用程序均可使用该 OSGi 束。

过程

  1. 在 zFS 中创建用于指定束目录的 BUNDLE 资源:
    1. 在 CICS SM 透视图中,单击 CICS Explorer® 菜单栏中的定义 > 束定义以打开“束定义”视图。
    2. 右键单击视图中的任意位置,然后单击新建以打开“新建束定义”向导。 在向导字段中输入 BUNDLE 资源的详细信息。
    3. 安装 BUNDLE 资源。 您可在 ENABLED 或 DISABLED 状态下安装资源:
      • 如果在 DISABLED 状态下安装资源,那么 CICS 会在框架中安装 OSGi 束,并解析依赖性,但是不会尝试启动束。
      • 如果在 ENABLED 状态下安装资源,那么 CICS 会安装 OSGi 束、解析依赖性,并启动 OSGi 束。 如果 OSGi 束包含缓慢束激活程序,那么 OSGi 框架不会尝试启动束,直至首先由其他 OSGi 束调用该束。
  2. 可选: 如果资源未处于 ENABLED 状态,那么启用 BUNDLE 资源以在框架中启动 OSGi 束。
  3. 单击 CICS Explorer 菜单栏中的操作 > ,以打开“束”视图。检查 BUNDLE 资源的状态。
    • 如果 BUNDLE 资源处于 ENABLED 状态,那么 CICS 能够成功安装束中的所有资源。
    • 如果 BUNDLE 资源处于 DISABLED 状态,那么 CICS 无法安装束中的一个或多个资源。
    如果 BUNDLE 资源在 ENABLED 状态下安装失败,那么请检查 BUNDLE 资源的束部件。如果任何束部件处于 UNUSABLE 状态,那么 CICS 无法创建 OSGi 束。通常,该状态表明在 zFS 中 CICS 束存在问题。您必须废弃 BUNDLE 资源、修复问题,然后重新安装 BUNDLE 资源。
  4. 单击CICS Explorer 菜单栏中的操作 > Java > OSGi 束 ,以打开“OSGI 束”视图。在 OSGi 框架中检查已安装的 OSGi 束和服务的状态。
    • 如果 OSGi 束处于 STARTING 状态,那么已调用束激活程序但该束激活程序尚未返回。如果 OSGi 束具有缓慢激活策略,那么该束会维持在该状态下,直至在 OSGi 框架中调用该束。
    • 如果 OSGi 束和 OSGi 服务处于活动状态,那么 Java 应用程序已准备就绪。
    • 如果 OSGi 服务处于不活动状态,那么 CICS 可能检测到在 OSGi 框架中已存在具有该名称的 OSGi 服务。
    • 如果您禁用了 BUNDLE 资源,OSGi 束将移动到“解析”状态。
    • 如果 OSGi 束处于 INSTALLED 状态,那么它尚未启动或由于无法解析 OSGi 束中的依赖关系而未能启动。

结果

这样会启用 BUNDLE,在 OSGi 框架中成功安装 OSGi 束,并且所有 OSGi 服务都处于活动状态。OSGi 束可用于框架中的其他束。

下一步做什么

您可以使 Java 应用程序可用于 OSGi 框架外的其他 CICS 应用程序,如在 JVM 服务器中调用 Java Web 应用程序中所述。要更新或除去应用程序,请参阅管理 Java 应用程序