Java Web Service

CICS ® 包含用于运行 Java™ Web Service 的 Axis2 技术。 Axis2 是 Apache 基础上的开放式源代码 Web Service 引擎,随 CICS 一起提供,用于在 Java 环境中处理 SOAP 消息。

Axis2 是支持许多 Web Service 规范的 Web Service SOAP 引擎的 Java 实现。 它还提供了一个编程模型,用于描述如何创建可在 Axis2中运行的 Java 应用程序。 Axis2 随 CICS 一起提供,用于在 Java 环境中处理 Web Service ,因此支持将符合条件的 Java 处理卸载到 zAAP 处理器。

JVM 服务器支持运行 Axis2 以处理 Java SOAP 管道中的入站和出站 SOAP 消息,而不更改任何现有 Web Service。 但是,您还可以从 Java 应用程序创建 Web Service ,并在同一 JVM 服务器中运行该 Web Service。 通过将应用程序部署到 JVM 服务器的 Axis2 存储库, Java 应用程序和 SOAP 处理都适合在 zEnterprise® 应用程序辅助处理器 (zAAP) 上运行。

由于下列其中一个原因,您可能希望使用 Java Web Service:

  • 您在其他平台上具有 Axis2 Web Service 的经验,并且希望在 CICS 中创建 Web Service。
  • 您希望使用标准 Java API 来创建与 Axis2集成的 Java 数据绑定。
  • 您具有难以使用 CICS Web Service 助手处理的复杂 WSDL 文档。

以下示例描述了如何将 Java 与 Web Service 配合使用。

处理 JVM 服务器中的 SOAP 消息

在 Web Service 管道中发生的大多数 SOAP 处理由 SOAP 处理程序和应用程序处理程序执行。 您可以选择在 JVM 服务器中运行此 SOAP 处理,并使用 zAAPs 来运行工作。 您可以继续使用以 COBOL , C , C++ 或 PL/I 编写的 Web Service 应用程序。

如果您具有现有 Web Service ,那么可以更新管道的配置以使用 JVM 服务器。 您不必更改 Web Service。 如果管道使用 SOAP 头处理程序,那么最好使用 Axis2 编程模型来重写 Java 中的程序。 头处理程序可以与 Axis2 共享 Java 对象,而无需执行任何进一步的数据转换。 例如,如果您有 COBOL 中的头处理程序,那么必须将数据从 Java 转换为 COBOL ,然后重新转换为 COBOL ,这会降低 SOAP 处理的性能。

下图中显示的方案是作为 Web Service 提供程序的 COBOL 应用程序的示例。 在配置为支持 Java 的管道中处理请求。 SOAP 处理程序和应用程序处理程序是由 Axis2 处理并在 JVM 服务器中运行的 Java 程序。 应用程序处理程序将数据从 XML 转换为 COBOL 并链接到应用程序。

Web Service 提供程序的体系结构,其中 JVM 服务器仅处理 SOAP 处理。 请参阅周围文本以获取说明。

规划环境时,请确保将一组专用区域用于 JVM 服务器。 在此示例中, COBOL 应用程序在独立于运行 JVM 服务器的 CICS 区域的应用程序拥有区域 (AOR) 中运行。 可以使用工作负载管理来均衡工作负载,例如,在来自应用程序处理程序的 EXEC CICS LINK 或来自 Web Service 请求者的入站请求上。

编写使用 CICS Web Service 助手输出的 Java 应用程序

您可以编写 Java 应用程序,以解释语言结构并使用 CICS Web Service 助手生成的数据绑定。 Web Service 助手可以从 WSDL 生成语言结构,也可以从语言结构生成 WSDL。 助手还会生成一个 Web Service 绑定,用于描述如何在 SOAP 处理期间在 XML 和目标语言之间转换数据。

如果使用助手来生成语言结构,那么可以使用 IBM® Record Generator for Java 或 Rational J2C 工具来处理语言结构以生成 Java 类。 这些工具为 Java 开发者提供了一种与其他 CICS 应用程序进行交互的方法。 在此示例中,您可以使用这些工具来编写 Java 应用程序,该应用程序可以在 CICS 从 XML 转换数据后处理入站 SOAP 消息。 有关更多信息,请参阅 与来自 Java 的结构化数据交互

下图中显示的方案是作为 Web Service 提供程序的 Java 应用程序的示例。 SOAP 处理由 JVM 服务器中的 Axis2 处理。 应用程序处理程序链接到 Java 应用程序,该应用程序打包并部署为一个或多个 OSGi 捆绑软件,并在 JVM 服务器中运行。

Web Service 提供程序的体系结构,其中应用程序在 JVM 服务器中运行,而另一个 JVM 服务器在管道中处理 SOAP 处理。 请参阅周围文本以获取说明。

此方法的优点是,由于数据绑定是由 Web Service 助手生成的,因此 Web Service 在 CICS 中由 WEBSERVICE 资源表示。 您可以使用 CICS 中的统计信息,资源管理和其他工具来管理 Web Service。 缺点是 Java 开发者必须使用可能不熟悉的编程语言的语言结构。

当您为此类型的应用程序规划环境时,请使用单独的 JVM 服务器来运行该应用程序:

  • 您可以针对不同的工作负载更有效地管理和调整 JVM 服务器。
  • 您可以对入站请求和 EXEC CICS LINK 使用工作负载管理,以均衡工作负载并扩展环境。
  • 您可以利用 CICS 中的 OSGi 支持来管理 Java 应用程序。

编写使用 Java 数据绑定的 Java 应用程序

您可以编写用于生成和解析 SOAP 消息的 XML 的 Java 应用程序。 Java 7 API 提供了用于处理 XML 的标准 Java 库; 例如,您可以使用 Java XML 绑定体系结构 (JAXB) 来创建 Java 数据绑定,并使用 Java API for XML Web Services (JAX-WS) 库来生成和解析 XML。 如果使用这些库,那么应用程序可以在与 SOAP 管道处理相同的 JVM 服务器中的 Axis2 中运行。

下图中显示的场景是 Java 应用程序的示例,该应用程序是 Web Service 提供程序,由 JVM 服务器中的 Axis2 SOAP 引擎处理。

CICS 区域中的 Web Service 提供程序体系结构。 请参阅周围文本以获取说明。

Java 应用程序使用 Java 数据绑定并与 Java SOAP 处理程序进行交互,因此没有应用程序处理程序。 在此示例中, Web Service 请求者使用 HTTP 连接到 CICS 区域,但您也可以使用 JMS。 在此示例 VSAM 文件和临时存储器队列中, Java 应用程序使用 JCICS 来访问 CICS 服务。

此方法的优点是 Java 开发者使用熟悉的技术来创建应用程序。 此外, Java 开发者可以使用 Web Service 助手无法处理以生成绑定的复杂 WSDL 文档。 但是,此方法有一些限制:

  • 不能将 WS-Security 用于此类型的应用程序,因此如果要使用安全性,请使用 SSL 来保护连接。
  • 在管道处理中不会发生用户标识的上下文切换。 要更改请求上的用户标识,请使用 URIMAP 资源。
  • 由于您未使用来自 Web Service 助手的 Web Service 绑定,因此没有 WEBSERVICE 资源。
  • 如果应用程序是 Web Service 请求者,那么将绕过管道处理。 因此,您无法获得管道中可用的服务质量。

如果在 CICS 区域中实施工作负载管理,那么必须规划如何路由此类型的工作负载。 由于 Java 应用程序与 SOAP 处理在同一 JVM 服务器中运行,因此 CICS 不会提供路由机会。 但是,如果需要路由,您可以在 JAX-WS 应用程序中实现到另一个程序的分布式程序链接。