Liberty JVM 服务器中的 Java 应用程序
CICS® 提供了可运行轻量级 Java™ Servlet 和 JavaServer Pages 的应用程序服务器。 开发者可以使用 CICS 规范中 Liberty 的丰富功能来编写 CICS的 Enterprise Java 应用程序。 应用程序服务器在 JVM 服务器中运行,并在 WebSphere® Application Server Liberty 上构建。
Liberty 是用于应用程序开发的轻量级应用程序服务器,可快速启动并可在不同平台上运行。 它针对 Java 开发人员进行了优化,以快速开发和测试应用程序,只需极少的工作量来配置和启动 Web 服务器。 Java 开发者将应用程序和 Web 服务器打包在一起,以通过使用免费可用的 Eclipse 工具进行简单部署。 可用的 Web Service 支持包括 Java API for RESTful Web Services (JAX-RS) 和 Java API for XML Web Services (JAX-WS)。 有关自由的更多信息,请参阅自由概述。
Liberty 随 CICS 一起安装,以在 JVM 服务器中作为应用程序服务器运行。 Liberty JVM 服务器支持 Liberty 中可用的功能部件子集; 您可以运行 OSGi 应用程序, Java Servlet 和 JSP 页面。 有关支持的功能部件的更多信息,请参阅 Liberty 功能部件。
- 您希望使 CICS 应用程序的演示界面现代化,将 3270 屏幕替换为 Web 浏览器和 RESTful 客户机。
- 您希望使用基于 Java 标准的开发工具将 Web 客户机与其他现有 CICS 应用程序打包,共存和管理。
- 您已在 WebSphere Application Server 中使用 Liberty 应用程序,并希望将其移植到 CICS中运行。
- 您已在 CICS 中使用 Jetty 或类似的 servlet 引擎,并且希望迁移到基于 Liberty 的应用程序服务器。
- 您希望使用数据源定义从 Java 访问 Db2® 数据库。 请参阅 定义 CICS Db2 连接。
- 您希望使用 Java 事务 API (JTA) 将对 CICS 可恢复资源进行的更新与通过类型 4 JDBC 数据库驱动程序对远程资源管理器进行的更新进行协调。
- 您希望使用 JAX-RS 来开发遵循 REpresentational State Transfer (REST) 原则的服务。
- 您希望使用 JAX-WS 通过支持基于注释的标准模型来开发应用程序。
- 您希望开发通过 JMS 发送和接收安全消息的 Enterprise Java 应用程序。
Liberty 应用程序中的 CICS 异常处理
Liberty 应用程序可以使用多个不同的事务 API ,包括 JCICS API。 大多数 Liberty 组件 (EJB 除外) 都要求显式使用 Java 事务 API (JTA) 来协调这些 API 之间的事务。 例如,如果在应用程序代码中发出异常后需要 JCICS 和远程 JDBC 活动进行回滚,那么必须先启动 JTA 事务,然后才能与 JDBC 连接进行交互。
CICS 针对 Liberty 中托管的简单 servlet 实现自动回滚-CICS-transactions-on-Exception 策略。 此策略确保在从普通 servlet 抛出异常时 CICS 事务回滚。 这足以为使用 JCICS API 的简单 servlet 提供基本事务集成,但策略不会解决您可能迂到的一些更复杂的场景。
例如, rollback-CICS-transactions-on-Exception 策略不会与其他非CICS 资源适配器 (例如,远程 JDBC 和 JCA 连接) 集成。 如果需要协调 CICS 与其他资源管理器之间的事务,那么必须使用 JTA 来显式协调事务。 这将导致 Liberty , CICS和远程事务管理器共同协商是落实还是回滚事务。
回滚-CICS-transactions-on-Exception 策略可用于简单 Servlet ,但不可用于 Liberty 环境中可用的整个可扩展性点范围。 更高级的 servlet 方案涉及在网络上下文之外运行的代码,如 Servlet 初始化程序,也缺乏自动回滚功能。 利用其他插件,回调和扩展点的高级用户在抛出异常时可能不会经历 CICS 事务的自动回滚。 如果从此类组件抛出的异常需要可预测的事务性,请使用 JTA 来协调事务; 备用选项是发出显式 JCICS 异常终止,以强制 CICS 回滚 CICS 事务以查找应用程序检测到的错误。
有关更多信息,请参阅 JCICS 程序中的CICS 异常处理。
Liberty 应用程序的 CICS 任务
为了使 Liberty 应用程序能够使用 JCICS API 和其他 CICS 资源 (例如,类型为 2 连接的 JDBC DataSource ) ,请求必须在 CICS 任务下运行。 CICS 根据请求类型在不同时间为应用程序请求创建任务。 对于 HTTP 请求,在调用Liberty应用程序之前会创建一个任务。 对于其他类型的请求 (例如,消息驱动的 bean (MDB) ,入站 JCA 和远程 EJB) ,将根据需要创建任务。
如果应用程序不与 CICS 交互,则不会为HTTP 请求创建 CICS 任务。
- 将执行 CICS 事务安全性检查。
- 开始对该任务进行 CICS 监视。
- 将启动任务的 CICS 跟踪。
- Java 线程的名称已更改为包含 CICS 任务号和事务标识。
对于HTTP 应用程序,这些操作会在首次使用JCICS API或类型为2 JDBC DataSource时发生。 如果应用程序不与 CICS 交互,则不会发生 CICS 监控或交易安全。
除非存在 CICS 任务,否则未捕获的 Java 异常的 CICS 异常终止处理不适用。 如果应用程序在使用类型为 2 连接的 JCICS API 或 JDBC DataSource 之前抛出异常,那么不会发生 AJ05 异常终止。