TXSeries入门系列文章19

7. 答案

1)修改ECI v1示例源代码,客户端应用发送消息:”Hello, I am client!“,服务器程序响应:”Receive: Hello, I am client! Response: Hello, I am server!“。

服务器端,(9.119.154.229,只有TXSeries服务器)

#cicsadd -c pd -r RGN1 HELO PathName=helloprg RSLKey=public

#cicsadd -c ld -r RGN1 LSN1 Protocol=TCP TCPService=test_43211

#vi /etc/services

添加:test_43211 43211/tcp

客户端(CTG和客户端应用程序)

#vi /etc/profile

添加:export CICSCLI=/opt/ibm/cicstg/bin/cicstg.ini

#. /etc/profile

#vi /opt/ibm/cicstg/bin/cicstg.ini

添加如下内容:

SECTION SERVER = RGN1

PROTOCOL=TCPIP

NETNAME=9.119.154.229

PORT=43211

ENDSECTION

#cicscli -s=RGN1

生成应用程序(请查看”/Unit 4/Exercise 1/“中的源代码)

对于服务器程序”helloprg“:

#cicstcl -lC -e -d helloprg.ccs

对于客户端应用”client“:

#make -f client.mk

测试:

./client

如果一切正常,会出现下列消息(服务器列表可能会不同):

CICS Transaction Gateway Basic ECI V1 Sample

Servers defined in the Client daemon:

1.PRD

2.IMAT

3.DB2

4.ORACLE

5.RGN1

Choose server to connect to:

5

Send Message:Hello, I am client!

Program HELO returned with data: Receive:Hello, I am client! Response:Hello, I am server!

2)修改ECI v2示例源代码, 客户端应用发送消息:”Hello, I am client!“,服务器程序响应:”Receive:Hello, I am client! Response:Hello, I am server!“。

服务器端(9.119.154.229TXSeries服务器和CTG)

#cicsadd -c pd -r RGN1 HELO PathName=helloprg RSLKey=public

#cicsadd -c ld -r RGN1 LSN1 Protocol=TCP TCPService=test_43211

#vi /etc/services

添加:test_43211 43211/tcp

#vi /etc/profile

添加:export CICSCLI=/opt/ibm/cicstg/bin/cicstg.ini

#. /etc/profile

#vi /opt/ibm/cicstg/bin/cicstg.ini

GATEWAY部分添加如下两行:

protocol@tcp.handler=com.ibm.ctg.server.TCPHandler

protocol@tcp.parameters=connecttimeout=2000;idletimeout=600000;pingfrequency=60000;port=2006;bindsolinger=0;

#cicscli -s=RGN1

#ctgstart

客户端(只有客户端应用):

不需要配置。

生成应用程序(请查看”/Unit 4/Exercise 2/“中的源代码):

对于服务器程序”helloprg“:

#cicstcl -lC -e -d helloprg.ccs

对于客户端应用”client“:

#make -f client.mk

测试:

./client

如果一切正常,会出现下列消息:

CICS Transaction Gateway Basic ECI V2 Sample

Usage: client [host name] [port number]

Connected to CICS TG on 9.119.154.229 using port 2006

Servers returned from CICS TG:

1. RGN1 –

Choose server to connect to, or q to quit:

1

An ECI_ERR_SECURITY_ERROR error occurred

Enter your CICS user ID:

a

Enter your CICS password or password phrase:

a

Program HELO returned with data: Receive:Hello, I am client! Response:Hello, I am server!

Closed connection to CICS Transaction Gateway

client completed successfully

TXSeries入门系列文章单元五
交互通信

五单元 交互通信

关于本单元

region间通信指的是不同region之间互相通信——本地region可以访问其他远程region中的服务,或为远程region提供本地服务。所以多个region可以共享CICS服务从而使得整个系统更有效率。在本单元中,将介绍DPLDistributed program link FSFunction Shipping)的配置和编程,也会介绍一个新的APILINK“和”READ“的另一种用法。

1. Distributed program link

1)什么是DPL

EXEC CICS LINK“命令允许一个程序链接到其他程序——当使用这条命令时,控制权会被传递给指定的第二个程序(被链接程序)。当第二个程序完成后,控制权会被交还给第一个程序(链接程序),并完成”EXEC CICS LINK“命令后的剩余逻辑。

如果链接程序和被链接程序位于同一region,这就是普通的程序链接。通过扩展”EXEC CICS LINK“,被链接程序(后端程序)可以位于远程region,这就是DPL

此外,两个程序可以通过COMMAREA传递数据。

DPL可以分离用户接口和业务逻辑,并获得性能收益,因为它更容易获取资源,而且访问数据库的程序也可以分割成更小的程序以减少复杂度和调试时间。

2)配置DPL

本节会给用户一个简单的示例配置,请遵循这些指令并根据实际环境进行配置。

在开始之前,请在两个不同的机器上(或在同一机器上,但为了便于学习推荐前一种)创建两个regionregionA作为本地regionregionB作为远程region

a. regionA添加链接程序的PDTD

为了测试DPL 需要为链接程序添加程序定义(PD)和交易定义(TD)。链接程序将向COMMAREA中放入数据,然后通过”EXEC CICS LINK“命令链接后端程序并通过COMMAREA获得返回数据。下一节将介绍DPL编程的详细信息。

b. regionA添加LD

监听器定义(LD)指定被regionA监听的端口号和regionA接收请求的地址。这个定义会在稍后被远程region使用与本地region通信。

语法

cicsadd -c ld -r <regionA’s name> <LD entry name> Protocol=TCP TCPAddress=<regionA’s address> TCPService=”<TCP service name>”

选项

<regionA’s address>   regionB中的后端程序返回控制权时,这个地址会被用来与regionA通信。

<TCP Service name>   在”/etc/services“文件中定义的服务名称。

本步骤中不要忘记在”/etc/services“文件中定义TCP服务名称和端口号。

参阅:

http://www-01.ibm.com/support/knowledgecenter/SSAL2T_8.1.0/com.ibm.cics.tx.doc/reference/r_listnr_defns.html?lang=en

c. regionA添加CD

通信定义(CD)描述与CICS region通信的其他region的配置,包括 CICS家族其他产品。每个CD描述一个远程region。在本单元,CD会定义与regionB的通信。

语法

cicsadd -c cd -r <regionA’s name> <CD entry> ConnectionType=cics_tcp

RemoteLUName=”<regionB’s name>” RemoteTCPAddress=<regionB’s address>

RemoteTCPPort=<port listened by regionB> ListenerName=”<regionA’s LD entry name>”

选项

RemoteLUName         如果连接类型是cics_tcpRemoteLUName是远程regionAPPLID。在本示例中,会使用regionB的名称。

RemoteTCPAddress    远程region所在机器的IP地址。

RemoteTCPPort          远程region监听的端口号。

以下文章点击率最高

Loading…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营