C/C++语言编写的客户应用为例开发连接池管理的方法

CICS 交易网关(CICS Transaction Gateway,以下简称 CICS TG)是 IBM 针对 CICS 交易服务器(CICS Transaction Server,以下简称 CICS TS)开发的高性能、高安全、高可用性和高扩容能力的接入方式。CICS TG 接受客户应用的请求,然后使用 TCPIP,EXCI 和 IPIC 等连接协议,以">负载均衡和动态选择 CICS TS 等高效方式,将应用请求通过 COMMAREA 或 Container/Channel 传递给选定的 CICS TS 进行处理,随后以同步或异步的方式将处理结果返回给客户应用。

CICS TG 为应用程序提供标准的 External Call Interface(以下简称 ECI)编程接口,支持 Java/J2EE、C/C++,.NET(VB,C#)等多种语言的应用程序。当客户应用通过 CICS TG 调用 CICS TS 中的交易时,首先建立一个和 CICS TG 的连接,然后使用连接调用 CICS TG 的 ECI 编程接口,处理结束后再释放连接。对于单个交易请求或较小规模的交易量,为每个交易进行连接的建立和释放不会导致效率问题,但可以预见的是随着交易规模的提升,频繁地为每次交易都创建和释放连接会极大地占用系统的开销,降低交易处理效率。因此,采用连接池来管理客户应用到 CICS TG 的连接,是 CICS TG 在支持高并发、高交易量的必然选择。

对于 J2EE 的应用,CICS TG 提供了在 J2EE 服务器(例如 WebSphere Application Server)中基于 J2EE Connector Architecture(以下简称 JCA)标准的连接器(adapter)。J2EE 应用通过调用 JCA 连接器的接口和 CICS TG 连接,发送交易请求和接收处理结果。CICS TG 提供的连接器基于 JCA 标准,因此 J2EE 服务器为 JCA 连接器和 CICS TG 之间提供高质量的连接池管理能力;而对于非 J2EE 应用,CICS TG 产品本身并不包含特定的功能模块来支持客户应用到 CICS TG 的连接池管理、或者利用运行环境中其他系统的连接池管理功能。

本文以 C/C++ 应用为例,介绍如何为非 J2EE 应用实现从客户应用到 CICS TG 的连接池管理。对于基于其他编程语言的应用,例如 VB、C# 等,原理是一致的。

产品和技术介绍

CICS 交易服务器

CICS 交易服务器(简称 CICS TS)是 IBM 针对 z/OS 的多用途事务处理软件。它基于 z/OS 和 System z 设施而构建,是一个强大的应用程序服务器,以较低的每事务成本来提供高可用性和可伸缩性,可满足大型企业和小型企业的事务处理需求。

CICS 交易网关

CICS 交易网关(简称 CICS TG)是 IBM 针对 CICS TS 开发的高性能、高安全、高可用性和高扩容能力的接入方式。相比于其它的 CICS TS 接入方式,CICS TG 拥有以下优势:

应用程序直接以 TCPIP 方式接入,无需 TCPIP 和 SNA 直接协议转换,调用路径短,提高效率和降低故障点 CICS TG 可以 EXCI(External CICS Interface)和 IPIC(IP interconnectivity)方式接入 CICS TS,比 TCP/IP 效率更高。其中 IPIC 可以把 java 负载转移到 zAAP(IBM System z
Application Assist Processor)处理器执行,提高 CP 的使用效率,减少 MIPS(Million Instructions Per Second)消耗 多个 CICS TG 可以组成高可用组(High Availability group),通过负载均衡和动态选择最佳的 CICS TS,进一步提高交易处理的响应效率,同时消除单点故障。此外,CICS TG 的高可用组始终对客户应用提供唯一不变的接入地址和端口,因此当向 CICS TG 高可用组中添加
新的 CICS TG 进行升级扩容时,客户的应用程序不会受到任何影响 CICS TG 支持多种编程语言接口 支持应用程序使用 Container/Channel 传递数据(克服 COMMAREA 的最大 32K 字节限制) 支持同步和异步调用,适用于单线程和多线程情况 可以利用连接池管理提高客户应用到 CICS TG 的调用效率

客户应用

本文提到的客户应用,是指一组满足如下特征的应用程序:

运行在 CICS TS 之外 通过调用 CICS TG 功能而向 CICS TS 发送交易请求,并从 CICS TG
获取交易处理结果 可以用任何编程语言实现

CICS 交易网关的部署和工作模式

CICS TG 支持多种操作系统平台、多种硬件平台、多种拓扑连接方式,因此有非常灵活的部署能力。下图描述了 CICS TG 的部署模式:

图 1.CICS 交易网关的部署工作模式

其中:

J2EE 应用:运行在 J2EE 服务器中,通过调用 JCA 连接器以 TCP/IP 方式连接 CICS TG。J2EE 的应用可以运行在和 CICS TG 不同或者相同的机器上,部署方式灵活。在这种模式下,J2EE 服务器提供客户应用到 CICS TG 的连接池管理,不需要实现额外的连接池管理。

Local 应用:客户应用运行在和 CICS TG 相同的机器上,通过调用 CICS TG 提供的本地模块(通常是动态加载和连接的程序库)直接和 CICS TG 传递数据。这种方式效率最高,且无需连接池管理。

Remote 应用:客户应用运行在和 CICS TG 不同或者相同的机器上,部署方式灵活,通过 TCP/SSL 的方式和 CICS TG 连接。这种方式需要实现单独的连接池管理。

在很多 CICS TG 客户的实际生产环境中,为了获取部署的灵活性,会采用 J2EE 应用和 Remote 应用。同时,由于许多客户都有大量传统的、非 J2EE 的应用,它们无法运行在 J2EE 服务器中。对于这部分应用,客户必须选择 Remote 应用模式,所以无法利用到 JCA 连接器和 J2EE 服务器提供的连接池管理功能,而必须实现单独的从客户应用到 CICS TG 的连接池管理。

时间: 2024-10-26 19:57:17

C/C++语言编写的客户应用为例开发连接池管理的方法的相关文章

求帮助啊 急用啊-用c语言编写剔除粗大误差的程序和相应的流程图

问题描述 用c语言编写剔除粗大误差的程序和相应的流程图 用c语言编写剔除粗大误差的程序以及流程图,用那种方法都行,只要正确就行 解决方案 什么叫最大误差?给个定义好么?没有定义怎么解决你的问题 解决方案二: 您可能没看清题,是粗大误差不是最大误差,有答案请尽快回答,急急急

SOAP净化有线协议(三):用脚本语言编写服务

脚本 你是一个渴望永远站在技术最前沿的Java开发者吗?软件产业风云变幻,你渴望把握Web的未来,更重要的是,如何把自己数年的Java经验发挥到极致.要寻找这些问题的答案,你不必走得太远,答案就在于SOAP. SOAP(简单对象访问协议)是一种利用XML编码数据的有线协议,它为Java的平台无关性.可移植性带来了更高层次的协同操作能力.在这个关于SOAP的系列文章的第二篇中,我介绍了Apache SOAP.作为SOAP规范的实现之一,Apache SOAP简化了SOAP应用的构造.我们曾经用Ap

erilog-用verilong语言编写一个走马灯的代码

问题描述 用verilong语言编写一个走马灯的代码 多模式LED发光控制器(Basys3)1)采用16个并排LED实现跑马灯发光器件:2)具有异步复位功能(按钮),复位时,LED全亮:3)模式选择(利用两位滑动开关):00-左循环跑马灯,01-右循环跑马灯,10-交叉闪烁跑马灯,11-全亮全灭闪烁4)速度选择(利用两位滑动开关):通过00-11实现四个速度等级的闪烁效果 解决方案 参考http://download.csdn.net/detail/xkdhdl/1745598http://ww

c语言-用C语言编写一个对数组排序的程序,要求使用递归算法实现。

问题描述 用C语言编写一个对数组排序的程序,要求使用递归算法实现. 用C语言编写一个对数组排序的程序,要求使用递归算法实现. 解决方案 http://blog.sina.com.cn/s/blog_70441c8e0100pxuh.html 快速排序 解决方案二: http://blog.csdn.net/meditator_hkx/article/details/49756199 快速排序采用的二分法,正是将问题化大为小,展现递归的精髓-

把c++语言转换成c语言-如何把C++语言编写的代码转换成C语言

问题描述 如何把C++语言编写的代码转换成C语言 #include <stdlib.h>#include <stdio.h> #include <string.h>#include <conio.h>#include <iostream.h>#define N 50 //系统中学生的最大数量int n=3; //学生数量的初始值struct student { int sid; char name[10]; char num[14]; float

中文字符-如何用C语言编写一个简单的输入法程序,要求可以输入汉字。

问题描述 如何用C语言编写一个简单的输入法程序,要求可以输入汉字. 不太清楚汉字在计算机中是如何存储的,想知道例如微软的智能ABC以及搜狗输入法是怎样实现拼音拼写下的汉字输入. 解决方案 首先要有一个汉字的编码库,比如GB2312编写的是拼音输入法的话,还要建立一个拼音与汉字对应的数据库然后根据用户输入的拼音,提示出对应的汉字(汉字的优先顺序由数据库决定,同时还可以学习该用户的使用习惯)如果输入法还支持智能联想输入的话,还要加入词库(也有优先级),这样可以根据前一个字来推断出下一个可能的字 解决

Mysql C API编程:用C语言编写的Mysql编程接口

软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程. API,全称Application Programming Interfaces,即应用程序编程接口,我们可以调用这些接口,执行API函数提供的功能. Mysql C语言API就是用C语言编写的Mysql编程接口,使用这些接口函数可以实现对Mysql数据库的查询等操作. Mysql的安装 要进行Mysql编程首先要在充当Mysql服务器的电脑和

C语言编写的接口程序

在通信中,为了保证运行安全可靠,标准的串行口必须具有许多握手信号和状态信息.这是因为通信的各个计算机CPU 速度不一样(这会导致"错帧")以及发送机发送数据速度比接收机接收速度快(这会导致"过冲").为解决这个问题,我们采用一个简单的握手信号,即发送机每次仅发送半个字节(低4 位)的数据,而另外半个字节(高4 位)则用来传送信息.我们可以对信息位(高4 位)进行如下简单的编码: 0H:发送的是新的半个字节数据 1H:重新发送上次传送错误的数据 2H:文件名结束 3H

用C语言编写程序实现Zip或者Rar无损压缩算法

用C语言编写程序实现Zip或者Rar无损压缩算法 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *HUFF.C Huffman encode for multimedia application 8*8 pixel Ver 3 * * * *Ver 1: Complied in Borland Turbo C++ 3.0 * *Ver 2: Complied in Microsoft Visual