20.7. Samples


20.7.1. 使用 Commarea

以下示例演示了如何配置使用 COMMAREA 在 CICS 服务器上运行程序的路由。COMMAREA 大小必须在 CICS_COMM_AREA_SIZE 标头中定义,而 COMMAREA 输入数据在 Camel Exchange 正文中定义。

注意

您必须创建一个足够大的 COMMAREA,使其包含要发送到服务器的所有信息,并足够大,以包含可以从服务器返回的所有信息。

//.....
import static com.redhat.camel.component.cics.CICSConstants.CICS_PROGRAM_NAME_HEADER;
import static com.redhat.camel.component.cics.CICSConstants.CICS_COMM_AREA_SIZE_HEADER;
//....

from("direct:run").
   setHeader(CICS_PROGRAM_NAME_HEADER, "ECIREADY").
   setHeader(CICS_COMM_AREA_SIZE_HEADER, 18).
   setBody(constant("My input data")).
   to("cics:eci/commarea?host=192.168.0.23&port=2006&protocol=tcp&userId=foo&password=bar");
Copy to Clipboard Toggle word wrap

CICS 程序调用的 Outcome 以这种方式映射到 Camel Exchange:

  • 返回代码的数字值保存在 CICS_RETURN_CODE 标头中
  • COMMAREA 输出数据存储在 Camel Exchange Body 中。

20.7.2. 使用带有单个输入容器的 Channel

以下示例演示了如何将频道与单个容器一起使用来运行 CICS 程序。频道名称和容器名称来自标头,容器值来自正文:

//.....
import static com.redhat.camel.component.cics.CICSConstants.CICS_PROGRAM_NAME_HEADER;
import static com.redhat.camel.component.cics.CICSConstants.CICS_CHANNEL_NAME_HEADER;
import static com.redhat.camel.component.cics.CICSConstants.CICS_CONTAINER_NAME_HEADER;

//...
from("direct:run").
  setHeader(CICS_PROGRAM_NAME_HEADER, "EC03").
  setHeader(CICS_CHANNEL_NAME_HEADER, "SAMPLECHANNEL").
  setHeader(CICS_CONTAINER_NAME_HEADER, "INPUTDATA").
  setBody(constant("My input data")).
  to("cics:eci/channel?host=192.168.0.23&port=2006&protocol=tcp&userId=foo&password=bar");
Copy to Clipboard Toggle word wrap

返回的容器存储在 java.util.Map<String,Object > 中,键是容器名称,值是容器的输出数据。

20.7.3. 使用带有多个输入容器的 Channel

如果您需要运行一个将多个容器的 CICS 程序作为输入,您可以创建一个 java.util.Map<String,Object& gt;,其中键是容器名称,值是输入数据。在这种情况下,CICS_CONTAINER_NAME 标头将被忽略。

//.....
import static com.redhat.camel.component.cics.CICSConstants.CICS_PROGRAM_NAME_HEADER;
import static com.redhat.camel.component.cics.CICSConstants.CICS_CHANNEL_NAME_HEADER;

//...
from("direct:run").
  setHeader(CICS_PROGRAM_NAME_HEADER, "EC03").
  setHeader(CICS_CHANNEL_NAME_HEADER, "SAMPLECHANNEL").
  process(exchange->{
    byte[] thirdContainerData = HexFormat.of().parseHex("e04fd020ea3a6910a2d808002b30309d");
    Map<String,Object> containers = Map.of(
           "firstContainerName", "firstContainerData",
           "secondContainerName", "secondContainerData",
           "thirdContainerName", thirdContainerData
    );
    exchange.getMessage().setBody(containers);
  }).
  to("cics:eci/channel?host=192.168.0.23&port=2006&protocol=tcp&userId=foo&password=bar");
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat