z/OS 如何调用 Web 服务? [关闭]
Posted
技术标签:
【中文标题】z/OS 如何调用 Web 服务? [关闭]【英文标题】:How can z/OS call a web service? [closed] 【发布时间】:2012-04-04 13:17:20 【问题描述】:我有一个需要从 Web 服务获取数据的 COBOL 程序。如果不使用 CICS,我最好的选择是什么?我认为 C 程序可以读取 Web 服务并将其保存到文件中,然后 COBOL 可以读取该文件。 COBOL 可以调用 Web 服务吗?数据大小约为 300mb。
【问题讨论】:
CICS 在这里被禁止有什么特别的原因吗?从批处理作业访问 CICS 服务非常容易。 【参考方案1】:使用 IBM TCP/IP 'EZASOKET' 模块
我在一家拥有 z/OS 系统的公司工作,该系统主要运行 COBOL、批处理 (JCL) 和 CICS。为了调用 web 服务,我们编写了一个模块来使用 TCP/IP 实现 HTTP 1.0。带模块
EZASOKET GETHOSTBYNAME 插座 连接 写 FCNTL 阅读 关闭 SELECTEX补充模块:
EZACIC04 将 EBCDIC 转换为 ASCII EZACIC05 将 ASCII 转换为 EBCDIC EZACIC06 将字符转换为位掩码 EZACIC08 解码 IP 地址因为我是为我的公司编写的,所以我不能只给出代码。但是作为参考,我花了 3 天时间来编写模块,并且从一个示例开始,它做了一个部分 hacky 的方式。
您需要通读 IBM 的参考资料以了解如何使用 EZA 模块。
http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm.zos.r11.halc001/sampcs.htm【讨论】:
【参考方案2】:可以从 z/os 上的 COBOL 程序调用 java。 我们公司已经做到了。
-
你必须指定它是递归的
你必须导入类
HelloJ 类是 “com.ibm.zos.batch.container.test.HelloJ” JavaException 类是“java.lang.Exception” BCDTranHelper 类是 “com.ibm.batch.spi.UserControlledTransactionHelper”。
-
您必须包含 JNI。
链接部分。
复制 JNI
***然后您可以在您的 PROCEDURE DIVISION 中从 COBOL 调用 java: 调用 HelloJ“sayHello”
还可以查看 Java Exception Check * 以了解如何处理异常。
如果您想从 z/os 上的 COBOL 程序调用 Web 服务,这将非常有用。
查看此链接了解更多详情。
http://pic.dhe.ibm.com/infocenter/zos/v1r13/index.jsp?topic=%2Fcom.ibm.zos.r13.iean500%2Fcodeexm.htm
【讨论】:
【参考方案3】:也许看看this article。它建议为 Web 服务创建一个 C/C++ 包装器接口。虽然本文是针对 iSeries 的,但您也许可以在 zSeries 下使用 BPXBATCH 实现非常相似的东西
基本上,他们建议在您的 COBOL 代码和与 Web 服务接口的 C++ 代码之间使用 C 包装器。此解决方案允许 COBOL 以相对直接的方式调用 C 函数。 C 函数通过使用 C++ 代理实现对 Web 服务的调用来模仿 C++ 行为。
【讨论】:
【参考方案4】:如果您可以在您的站点上使用 Java,则可以选择从 cobol 程序调用 Java 来访问 Web 服务。假设您使用 Enterprise cobol,请查看 Java Stand-alone Applications on z/OS Volume II 的第 6.44 节
【讨论】:
我会对此进行更正,但是...我认为可以从 Java 应用程序调用 COBOL 子例程(方法),但反之则不行。 Java 需要在 JNI 下运行,而 COBOL 只有在从 Java 调用时才需要它。如果没有在 JNI 下运行的***进程(即 Java),则无法调用需要它的较低级别的进程。这就是为什么 z/os 下的 OO COBOL 主线不存在(它们只能从 Java 程序中调用)。【参考方案5】:如果您使用的是 z/OS 2.1 或更高版本,请使用 z/OS 客户端 Web 启用工具包。
查看 SYS1.SAMPLIB(HWTHXCB1) 中的 Cobol 示例。
如果您的 Cobol 在 DB2 DSN 命令下运行,您还可以使用 SOAPHTTP* 标量函数。
【讨论】:
以上是关于z/OS 如何调用 Web 服务? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章