从 CICS 程序链接到 OSGi 应用程序
您可以链接到作为 CICS 事务的初始程序在 OSGi JVM 服务器中运行的 OSGi 应用程序,也可以使用来自 CICS 程序的 API 命令进行链接。
要由 CICS 程序链接到, OSGi 应用程序必须是打包为 Java 归档 (JAR) 文件中 OSGi 捆绑软件的一部分的 纯旧 Java 对象 (POJO)。
- 仅需要维护单个逻辑段,以允许代码使用 JCICS API 来访问 CICS 资源。
- 您希望将 Java 中的新功能作为 CICS 应用程序的一部分编写-例如,您可能希望使用 Java 中存在的第三方库或 API。
- 您想用 Java 重新实现现有的 COBOL 应用程序。 例如,要充分利用组织的 Java 技能或降低维护成本。 或者,您可能希望使应用程序能够在专用处理器上运行,而不是在通用处理器上运行。
从 CICS 程序链接到 Java 应用程序时, CICS 会将控制通过 Java 本机接口 (JNI) 传输到 JVM 以将 Java 应用程序作为目标。 Java 应用程序在与调用程序相同的任务和工作单元 (UOW) 上运行。 对可恢复 CICS 资源进行的任何更新都将在事务结束时落实或回退。
建议由 CICS 程序链接的 Java 代码是应用程序业务逻辑的一部分,而不是其表示逻辑的一部分。
您可以使用 OSGi 清单中的 CICS-MainClass 或 @CICSProgram 注释将 Java 代码定义为链接目标-在表中汇总了差异。
| COMMAREA | 输入消息 | 通道 | 程序自动安装 | 每个类有多个定义 | |
|---|---|---|---|---|---|
CICS-MainClass |
是 | 是 | 是 | False | False |
@CICSProgram |
False | False | 是 | 是 | 是 |
CICS-MainClass 将类的单个静态 main 方法作为目标,并且需要 OSGi 清单文件中的配置以及 CICS 程序定义。 它支持 Commarea,通道和 Input Message,提供更广泛的链接类型。
@CICSProgram 仅支持与通道链接,但通过在源代码中声明其配置而获益。 它还可以自动生成和安装程序定义,并允许将多个方法作为同一类中的目标。
OSGi 是一种模块化技术,因此 JVM 服务器可以托管同一 OSGi 捆绑软件的多个版本。 当定义了以 JVM 服务器中的 Java 代码为目标的 CICS 程序时,以特定版本的 OSGi 捆绑软件中的代码为目标可能很重要。
缺省情况下, CICS 以具有最高可用代码版本的 OSGi 束中的 Java 代码为目标。 要将特定版本或版本范围作为目标,可以将参数添加到 JVMCLASS 值。
- 安装新版本的 OSGi 捆绑软件并验证安装,而不会影响正在运行的应用程序。
- 以增量方式更新应用程序以使用新功能,在新版本中可用。
- 从新版本中除去功能而不影响现有应用程序。
- 严格控制应用程序的依赖关系。