在 JVM 服务器中部署 OSGi 束

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

开始之前

必须将包含应用程序的 OSGi 束的 CICS® 束部署到 zFS。目标 JVM 服务器必须进行配置,以运行 OSGi 框架并在 CICS 区域中启用。您必须使用 CICS Explorer® 连接到 CICS 区域,以创建 CICS 资源。

关于此任务

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

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

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

过程

  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 束和服务的状态。 下表总结了这些状态:
    BUNDLEPART OSGIBUNDLE OSGISERVICE
    ENABLED STARTING 不适用
    ENABLED ACTIVE ACTIVE
    ENABLED ACTIVE INACTIVE
    DISABLED RESOLVED 不适用
    DISABLED INSTALLED 不适用
    UNUSABLE 不适用 不适用
    • 如果 OSGi 束处于 STARTING 状态,那么已调用束激活程序但该束激活程序尚未返回。如果 OSGi 束具有缓慢激活策略,那么该束会维持在该状态下,直至在 OSGi 框架中调用该束。
    • 如果 OSGi 束和 OSGi 服务处于活动状态,那么 Java 应用程序已准备就绪。
    • 如果 OSGi 服务处于不活动状态,那么 CICS 会检测到在 OSGi 框架中已存在带有该名称的 OSGi 服务。
    • 如果您禁用了 BUNDLE 资源,OSGi 束将移动到“解析”状态。
    • 如果 OSGi 束处于 INSTALLED 状态,那么它尚未启动或由于无法解析 OSGi 束中的依赖关系而未能启动。

结果

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