哪个是连接大型机和java的成熟解决方案?WebSphere MQ / IBM CICS Transaction Gateway 哪个最好?
哪个是连接到 java 和大型机 COBOL 的最佳解决方案?
假设“Java”是指“Java 不在大型机上运行”,有多种方法可以做到这一点。
“最好”在旁观者眼中,这取决于你想要什么。这些都不是新的,该功能已经可用好几年了。
对于选项 1,CICS Web 服务助手将从 COBOL 现有语言结构生成 WSDL。如果您决定不喜欢它生成的内容,您可以编写自己的 WSDL 并从中生成 COBOL 语言结构。Java 程序将使用您最喜欢的 SOAP(或 MQ)基础架构与 CICS/COBOL 程序进行通信。
对于选项 2,您的 CICS/COBOL 程序必须编码为“Web 感知”。CICS/COBOL 程序必须使用 WEB EXTRACT、WEB RECEIVE 和 WEB SEND API 来与 Java 程序通信。Java 程序将使用 HTTP(S) GET/POST 处理向 CICS/COBOL 程序发送/接收消息。
对于选项 3,您的 CICS/COBOL 程序必须被编码为使用 MQGET 和 MQPUT 来接收和发送消息到 Java 程序。您希望使用回退队列名称和回退阈值定义队列,并根据回退计数值检查后者。如果阈值大于计数,您希望将消息移动到回退队列而不尝试在 CICS/COBOL 程序中处理它(这是一条有害消息)。java 程序将使用 JMS 或任何您喜欢的消息传递包装程序包与 CICS/COBOL 程序进行通信。
从顶部看,您可以连接到 CICS
对于将来的搜索,您可以使用:
https://github.com/naskarlab/java-mainframe-tools
您创建一个 COMMAREA 以仅使用带有 PICTURE 注释的 POJO 来调用 CICS 程序。
public class Data {
@PIC9(8)
private Long id;
@PIC9(5)
private Integer code1;
@PIC9(9)
private Integer code2;
...
}
Configuration config = new Configuration("tcp://host", 35500, "CICS1", "CICS1", "CICS1"); // CTG Connection
CommArea comm = new CommArea();
Cics cics = new Cics(config, "PRG1", "PROG1"); // CICS transaction or program name
Data data = new Data(); // your POJO
byte[] commArea = comm.to(data); // transforms POJO to comm area
cics.runECIRequest(commArea);
comm.from(commArea, data); // injects the values from comm area to POJO